#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <diablomod_items>
#include <colorchat>
#define PLUGIN "Diablomod: Przekaz item"
#define VERSION "1.0"
#define AUTHOR "R3X"
#define Keys_ask (1<<0)|(1<<1) // Keys: 12
//#define DEBUG
enum Command{
Cmd_IdontKnow,
Cmd_Give,
Cmd_Get
}
new gcvarItemFF;
new Command:gCmd[33] = {Cmd_IdontKnow, ...};
new gTarget[33] = {0,...};
new menuCallback;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_menucmd(register_menuid("_ask"), Keys_ask, "Pressed_ask")
menuCallback = menu_makecallback("mcb_Players")
register_clcmd("say /daj", "cmdGive");
register_clcmd("say /wez", "cmdGet");
gcvarItemFF=register_cvar("diablo_give_ff", "0");
}
public cmdGive(id){
new item = diablo_get_user_item(id);
if(item == 0){
ColorChat(id, GREEN, "[^x01DiabloMod^x04]^x01 Nie masz itemu!");
return PLUGIN_CONTINUE;
}
gCmd[id] = Cmd_Give;
menu_display(id, get_players_menu(id), 0);
return PLUGIN_CONTINUE;
}
public cmdGet(id){
gCmd[id] = Cmd_Get;
menu_display(id, get_players_menu(id), 0);
return PLUGIN_CONTINUE;
}
get_players_menu(id){
new iTeam = get_user_team(id);
new iFF = get_pcvar_num(gcvarItemFF);
new iPlayers[32], iNum;
get_players(iPlayers, iNum);
new menu = menu_create("Wybierz gracza", "handle_pmenu");
new id2, szName[32], szInfo[3];
for(new i=0;i<iNum;i++){
id2 = iPlayers[i];
get_user_name(id2, szName, 31);
formatex(szInfo, 2, "%2d", id2);
if(id == id2)
continue;
if(iFF){
if(get_user_team(id2) != iTeam)
continue;
}
menu_additem(menu, szName, szInfo, 0, menuCallback);
}
return menu;
}
public mcb_Players(id, menu, item){
new szInfo[3], iAccess;
new szName[32], callback;
menu_item_getinfo(menu, item,iAccess, szInfo,2, szName, 31, callback);
new id2 = str_to_num(szInfo);
switch(gCmd[id2]){
case Cmd_Give:{
return (diablo_get_user_item(id2) == 0)?ITEM_ENABLED:ITEM_DISABLED;
}
case Cmd_Get:{
return (diablo_get_user_item(id2) == 0)?ITEM_DISABLED:ITEM_ENABLED;
}
}
return ITEM_ENABLED;
}
public handle_pmenu(id, menu, item){
if(item >= 0){
new szInfo[3], iAccess;
new szName[32], callback;
get_user_name(id, szName, 31);
new szName2[32];
menu_item_getinfo(menu, item,iAccess, szInfo,2, szName2, 31, callback);
new id2 = str_to_num(szInfo);
#if defined DEBUG
client_print(id, print_chat, "[DiabloMod] %d wybral gracza %d",id, id2);
#endif
new bool:error = false;
switch(gCmd[id]){
case Cmd_Give:{
if(!diablo_get_user_item(id)){
ColorChat(id, GREEN, "[^x01DiabloMod^x04]^x01 Nie masz itemu!");
error = true;
}
if(diablo_get_user_item(id2)){
ColorChat(id, GREEN, "[^x01DiabloMod^x04]^x01 Wybrany gracz ma już item!");
error = true;
}
if(error == false)
give_diabloitem(id, id2);
}
case Cmd_Get:{
get_diabloitem(id, id2);
}
}
}
menu_destroy(menu);
}
give_diabloitem(id, target){
gTarget[id] = target;
Show_ask(id, target);
}
get_diabloitem(id, source){
gTarget[id] = source;
Show_ask(source,id, 1);
}
Show_ask(id,id2, get=0) {
new szName[32];
get_user_name(id, szName, 31);
new szMenu[128];
formatex(szMenu, 127, "\yDiablomod^n\w^nChcesz %s item ^n\r%s\we?^n^n1. Tak^n2. Nie^n", get?"oddac":"wziść", szName );
show_menu(id2, Keys_ask, szMenu , -1, "_ask"); // Display menu
}
getOwner(id){
for(new i=1;i<33;i++){
if(is_user_connected(i) && id==gTarget[i])
return i;
}
return 0;
}
public Pressed_ask(id, key) {
/* Menu:
* Diablomod
*
* Chcesz oddac swoj item graczowi
* Imie?
*
* 1. Tak
* 2. Nie
*/
//zle id:D
new id2 = getOwner(id);
new szName[32], szName2[32];
get_user_name(id, szName, 31);
#if defined DEBUG
client_print(id, print_chat, "[DiabloMod] Przekaz: CMD=%d, %d->%d",gCmd[id2],id2, id);
#endif
new bool:error=false;
switch (key) {
case 0: { // 1
if(is_user_connected(id2)){
get_user_name(id2, szName2, 31);
switch(gCmd[id2]){
case Cmd_Give:{
if(diablo_get_user_item(id)){
ColorChat(id, GREEN, "[^x01DiabloMod^x04]^x01 Masz juz item!");
error = true;
}
if(!diablo_get_user_item(id2)){
ColorChat(id2, GREEN, "[^x01DiabloMod^x04]^x01 Nie masz itemu!");
error = true;
}
if(error == false){
ColorChat(0, GREEN, "[^x01DiabloMod^x04]^x01 Gracz^x04 %s^x01 przekazal item graczowi^x04 %s", szName2, szName);
diablo_send_user_item(id2, id);
}
}
case Cmd_Get:{
if(zaplac(id, 5000))
diablo_send_user_item(id, id2);
else
ColorChat(id2, GREEN, "[^x01DiabloMod^x04]^x01 Aby wziść item potrzebojesz 5000$!");
}
}
}
}
}
gTarget[id] = 0;
gCmd[id] = Cmd_IdontKnow;
}
public bool:zaplac(id, kwota)
{
new kasa = cs_get_user_money(id);
if(kasa < kwota)
return false;
cs_set_user_money(id, kasa-kwota);
return true;
}