Code: Show/Hide spawn.h enum ptags{ has_confirmed, asker_ident, prize_amount }; spawn.cpp int strcasecmp (const char *a, const char *b) { // compare strings not case sensitive register int n; while (*a == *b || (n = tolower (*a) - tolower (*b)) == 0) { if (*a == '\0') return 0; a++, b++; } return n; } Player* botInfo::GetPilot(char *name) { _listnode <Player> *parse = playerlist->head; while (parse) { Player *p = parse->item; if (strcasecmp(p->name,name)==0) return p; parse = parse->next; } return 0; } Player* botInfo::GetPilot(int id) { _listnode <Player> *parse = playerlist->head; while (parse) { Player *p = parse->item; if (p->ident == id) return p; parse = parse->next; } return 0; } command.cpp if (c->check("give")) { // !give <name>,<amount> String str = c->final; int check = strstr(s,",")-s; String name = s.split(',"); int amount = getInteger(s,10); Player t = GetPilot(name); if (t) { set_tag(p,asker_ident,t->ident); set_tag(p,has_confirmed,0); set_tag(t,has_verified,0); set_tag(t,prize_amount,amount); sendPrivate(p,"Verify sending '" + (String) t->name + "' " + (String) amount + " points by replaying !confirm"); } } if (c->check("confirm")) { if (get_tag(p,has_confirmed)==0) { set_tag(p,has_confirmed,1); Player t = GetPilot(get_tag(p,asker_ident)); if (t) { sendPrivate(t,"'" + (String) p->name + "' wants to give you " + (String) amount + " points, grant by replying !yes"); } } } if (c->check("yes")) { int amount = get_tag(p,amount); if (amount > 0) { sendPrivate(p,"*points " + (String) amount); set_tag(p,prize_amount,0); } } |
Cyan~Fire wrote: |
The reason I suggested an array instead of a linkedlist is because it could be 2 dimensions. |