#include <properties.h>#include <attributes.h>
gehe zum Quellcode dieser Datei
Makrodefinitionen | |
| #define | ME this_object() |
Funktionen | |
| int | DeepQueryMoney (object ob) |
| int | is_bank (object ob) |
| int | DeepTransferMoney (object pl, int amount) |
| varargs int | TestAndTransfer (object ob, int trans, string msg) |
Variablen | |
| inherit std player | moneyhandler |
| int DeepQueryMoney | ( | object | ob | ) |
Definiert in Zeile 18 der Datei nobank.c.
Wird benutzt von is_bank().
00018 { 00019 int res,i; 00020 object *obs; 00021 00022 if (!ob) return 0; 00023 res=0;obs=deep_inventory(ob); 00024 for (i=sizeof(obs)-1;i>=0;i--) 00025 if ((ob=obs[i]) && object_name(ob)[0..10]=="/obj/money#") 00026 res+=ob->QueryProp(P_AMOUNT); 00027 return res; 00028 }

| int DeepTransferMoney | ( | object | pl, | |
| int | amount | |||
| ) |
Definiert in Zeile 51 der Datei nobank.c.
Benutzt AddMoney(), ctime(), i, log_file, ME, ob(), obs und P_AMOUNT.
Wird benutzt von TestAndTransfer().
00051 { 00052 object *obs,ob; 00053 int act,trans,i; 00054 00055 if (!pl || amount<=0) 00056 return 0; 00057 if (pl->QueryMoney()>=amount) { 00058 pl->AddMoney(-1*amount); 00059 trans=amount; 00060 } else { 00061 obs=deep_inventory(pl);trans=0; 00062 for (i=sizeof(obs)-1;i>=0;i--) { 00063 if ((ob=obs[i]) && object_name(ob)[0..11]=="/obj/money#") { 00064 act=ob->QueryProp(P_AMOUNT); 00065 if (act<=0) continue; 00066 if (act>=amount) { // mehr Geld als benoetigt? 00067 ob->SetProp(P_AMOUNT,act-amount); // abziehen 00068 trans+=amount; 00069 amount=0; // nichts mehr benoetigt 00070 break; // also auch ende 00071 } 00072 amount-=act; 00073 trans+=act; 00074 ob->remove(); // abziehen was da ist 00075 } 00076 } 00077 } 00078 log_file("stolen_money", 00079 sprintf("%s %O: %O (%O)\n",ctime(time())[4..15],pl,trans,ME)); 00080 AddMoney(trans); 00081 return trans; 00082 }


| int is_bank | ( | object | ob | ) |
Definiert in Zeile 30 der Datei nobank.c.
Benutzt A_CON, A_DEX, A_INT, A_STR, DeepQueryMoney(), P_QP, P_XP und stats.
Wird benutzt von TestAndTransfer().
00030 { 00031 int *stats,geld; 00032 00033 if (!ob || !query_once_interactive(ob)) return 0; 00034 stats=({ob->QueryAttribute(A_STR), 00035 ob->QueryAttribute(A_INT), 00036 ob->QueryAttribute(A_DEX), 00037 ob->QueryAttribute(A_CON), 00038 0}); 00039 stats[4]=stats[1]+stats[2]+stats[3]; 00040 geld=DeepQueryMoney(ob); 00041 00042 if (stats[0]>=10 00043 && stats[4]<stats[0] 00044 && geld>5000 00045 && ob->QueryProp(P_XP)<300000 00046 && ob->QueryProp(P_QP)<300) 00047 return geld; 00048 return 0; 00049 }


| varargs int TestAndTransfer | ( | object | ob, | |
| int | trans, | |||
| string | msg | |||
| ) |
Definiert in Zeile 84 der Datei nobank.c.
Benutzt DeepTransferMoney() und is_bank().
00084 { 00085 int geld,abzug; 00086 00087 if ((geld=is_bank(ob))<=0) return 0; 00088 if (trans<0) 00089 abzug=(geld*trans)/-100; // Prozentsatz 00090 else 00091 abzug=trans; // fester Abzug 00092 if (abzug>geld) abzug=geld; 00093 if (abzug<=0) return 0; 00094 abzug=DeepTransferMoney(ob,abzug); 00095 if (abzug<=0) return 0; 00096 if (msg && ob) 00097 tell_object(ob,sprintf(msg,abzug)); 00098 return abzug; 00099 }

| inherit std player moneyhandler |
1.6.3