Ayuda como adaptar un plugin normal a zp
#1
Bueno nunca me atreví a adaptar un plugin normal a zp y viceversa, Si tienen un ejemplo para adaptar si saben mucho de eso enséñenme igual aprendo rápido

El plugin que quiero adaptar es el party de [R]ak (El loquillo codeador) para zp y que reparta exp
Código PHP:
#include <amxmodx>

#define PLUGIN "Party Menu"
#define VERSION "2.2"
#define AUTHOR "[R]ak"

#define TAG    "[Party]"
#define ID_HUD    (taskid - TASK_HUD)

enum (+= 77) {
    
TASK_HUD 777,
    
TASK_ACEPT
}

enum {
    
NONE = -1,
    
Master,
    
Start_Amount
}

enum _:pdata {
    
In_Party,
    
Position,
    
Amount_In_Party,
    
Block_Party,
    
UserName[32]
}

enum _:DataCallBack {
    
MASTER,
    
USER
}

new 
g_PartyData[33][pdata], Array:Party_Ids[33], g_maxplayersg_MenuCallback[DataCallBack], g_MsgSayText

new cvar_time_aceptcvar_max_playerscvar_allow_bots

public plugin_init() {
    
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say /party""cmdParty")
    
register_clcmd("say_team""cmdSayTeam")
    
    
cvar_time_acept register_cvar("party_time_acept","10")
    
cvar_max_players register_cvar("party_max_players","3")
    
cvar_allow_bots register_cvar("party_allow_bots","0")
    
    
g_maxplayers get_maxplayers()
    
g_MsgSayText get_user_msgid("SayText")
    
    
g_MenuCallback[MASTER] = menu_makecallback("check_master")
    
g_MenuCallback[USER] = menu_makecallback("check_user")
}

public 
plugin_cfg()
    for(new 
1<= g_maxplayersi++)
        
Party_Ids[i] = ArrayCreate(11)

public 
client_disconnect(id) {
    
    if(
g_PartyData[id][In_Party])
        
g_PartyData[id][Position] ? g_PartyData[id][Amount_In_Party] == destoy_party(id) : remove_party_user(id) : destoy_party(id)
        
    
g_PartyData[id][UserName][0] = 0
    g_PartyData
[id][Block_Party] = false
    
}

public 
cmdParty(id) {
    
    if(
g_PartyData[id][In_Party])
        
show_party_info_menu(id)
    else
        
show_party_menu(id)
    
    return 
PLUGIN_HANDLED
}

public 
show_party_menu(id) {
    
    new 
iMenu menu_create("[R]ak Acme Inc.- \rMenu Party:","party_menu"), BlockParty[50]
    
    
menu_additem(iMenu"\yCrear Party""0")
    
    
formatex(BlockPartycharsmax(BlockParty), "\yBloquear Invitaciones De Party: \w%s",g_PartyData[id][Block_Party] ? "Si" "No")
    
    
menu_additem(iMenuBlockParty"1")
    
    
menu_setprop(iMenuMPROP_EXITNAME"Salir")
    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idiMenu0)
}

public 
show_party_info_menu(id) {
    
    new 
iMenu menu_create("[R]ak Acme Inc.- \rMenu Party:","party_info_menu")
    
    
menu_additem(iMenu"Agregar Integrante", .callback g_MenuCallback[MASTER])
    
menu_additem(iMenu"Expulsar Integrande", .callback g_MenuCallback[MASTER])
    
menu_additem(iMenu"Destruir Party", .callback g_MenuCallback[MASTER])
    
menu_additem(iMenu"Salir del Party", .callback g_MenuCallback[USER])
    
    
menu_setprop(iMenuMPROP_EXITNAME"Salir")
    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idiMenu)
}

public 
show_party_add_menu(id) {
    
    new 
iMenu menu_create(g_PartyData[id][In_Party] ? "\rAgregar Integrante:" "\rCrear Party:""party_create_menu"), Poss[3], Name[32]
    
    for(new 
1<= g_maxplayersi++) {
        
        if(!
is_available_to_party(i) || id == i)
            continue;
            
        
get_user_name(iNamecharsmax(Name))
        
num_to_str(iPosscharsmax(Poss))
        
menu_additem(iMenuNamePoss)
    }
    
    
menu_setprop(iMenuMPROP_EXITNAME"Salir")
    
menu_setprop(iMenuMPROP_EXITMEXIT_ALL)
    
    
menu_display(idiMenu)
}

public 
show_party_kick_menu(id) {
    
    new 
iMenu menu_create("\rKick Party Menu:","party_kick_menu"), Players[32], Poss[3], user
    
    get_party_index
(idPlayers)
    
    for(new 
ig_PartyData[id][Amount_In_Party]; i++) {
        
user Players[i]
        
num_to_str(userPosscharsmax(Poss))
        
menu_additem(iMenug_PartyData[user][UserName], Poss)
    }
    
    
menu_setprop(iMenuMPROP_EXITNAME"Salir")
    
    
menu_display(idiMenu)
}

public 
show_party_invite_menu(id2MasterId) {
    
    new 
MenuTitle[128], iMenuStr_MasterId[3]
    
    
set_player_party_name(MasterId)
    
set_player_party_name(id2)
    
    
client_print(MasterIdprint_chat"%s Solicitud enviada a %s"TAGg_PartyData[id2][UserName])
    
    
formatex(MenuTitlecharsmax(MenuTitle), "%s te mando una invitacion para %s Party"g_PartyData[MasterId][UserName], g_PartyData[MasterId][In_Party] ? "unirte al" "crear un")
    
    new 
UserTaskArgs[3]
    
    
UserTaskArgs[0] = iMenu menu_createMenuTitle "party_invite_menu")
    
UserTaskArgs[1] = MasterId
    
    num_to_str
(MasterIdStr_MasterIdcharsmax(Str_MasterId))
    
    
menu_additemiMenu "Aceptar"Str_MasterId)
    
menu_additemiMenu "Rechazar"Str_MasterId)
    
    if(
is_user_bot(id2) && get_pcvar_num(cvar_allow_bots)) {
        
party_invite_menu(id2iMenu0)
        return
    }
    
    
menu_setprop(iMenuMPROP_EXITMEXIT_NEVER)
    
    
menu_display(id2iMenu)
    
    
remove_task_acept(id2)
    
    
set_task(get_pcvar_float(cvar_time_acept), "Time_Acept"id2+TASK_ACEPTUserTaskArgs2)
}
    

public 
party_menu(idmenuitem) {
    
    if(
item == MENU_EXIT) {
        
menu_destroy(menu)
        return
    }
    
    if(
item) {
        
g_PartyData[id][Block_Party] = g_PartyData[id][Block_Party] ? false true
        show_party_menu
(id)
    }
    else
        
show_party_add_menu(id)
    
    
menu_destroy(menu)
    
}

public 
party_create_menu(idmenuitem) {
    
    if(
item == MENU_EXIT) {
        
menu_destroy(menu)
        return
    }
    
    new 
iKey[6], iAccessiCallbackid2
    
    menu_item_getinfo
(menuitemiAccessiKeycharsmax(iKey), __iCallback)
    
    
id2 str_to_num(iKey)
    
    if(!
is_available_to_party(id2))
        return
    
    
show_party_invite_menu(id2id)
    
    
menu_destroy(menu)
}

public 
party_invite_menu(idmenuitem) {
    
    if(
item == MENU_EXIT) {
        
menu_destroy(menu)
        
remove_task_acept(id)
        return
    }
    
    new 
iKey[6], iAccessiCallbackid_master
    
    menu_item_getinfo
(menuitemiAccessiKeycharsmax(iKey), __iCallback)
    
    
id_master str_to_num(iKey)
    
    switch(
item) {
        case 
0: {
                        
            if(!
g_PartyData[id_master][In_Party]) {
                
create_party(id_masterid)
                
set_task_party_hud(id_master)
                
set_task_party_hud(id)
            }
            else {
                if(
g_PartyData[id_master][Amount_In_Party] == get_pcvar_num(cvar_max_players)) {
                
                    
client_print(idprint_chat"%s Ya se alcanzo el numero maximo de integrantes en la party"TAG)
                    
client_print(id_masterprint_chat"%s Ya alcanzaste el numero maximo de integrantes en la party"TAG)
                
                    
remove_task_acept(id)
    
                    
menu_destroy(menu)
                    return
                }
                
                
add_party_user(id_masterid)
                
set_task_party_hud(id)
            }
            
            
client_print(id_masterprint_chat"%s %s fue agregado al Party"TAGg_PartyData[id][UserName])
        }
        case 
1client_print(id_masterprint_chat"%s %s cancelo la invitacion de Party"TAGg_PartyData[id][UserName])
    }
    
    
remove_task_acept(id)
    
    
menu_destroy(menu)
}

public 
party_kick_menu(idmenuitem) {
    
    if(
item == MENU_EXIT) {
        
menu_destroy(menu)
        return
    }
    
    new 
iKey[6], iAccessiCallbackid2
    
    menu_item_getinfo
(menuitemiAccessiKeycharsmax(iKey), __iCallback)
    
    
id2 str_to_num(iKey)
    
    if(
is_user_connected(id2))
        
g_PartyData[id][Amount_In_Party] == destoy_party(id) : remove_party_user(id2)
    
    
menu_destroy(menu)
}

public 
party_info_menu(idmenu,item) {
    
    if(
item == MENU_EXIT) {
        
menu_destroy(menu)
        return
    }
    
    switch(
item) {
        case 
0: {
            if(
g_PartyData[id][Amount_In_Party] < get_pcvar_num(cvar_max_players))
                
show_party_add_menu(id)
            else
                
client_print(idprint_chat"%s Ya alcanzaste el numero maximo de integrantes en la party"TAG)
        }
        case 
1show_party_kick_menu(id)
        case 
2destoy_party(id)
        case 
3remove_party_user(id)
    }
    
    
menu_destroy(menu)
}

public 
PartyHud(taskid) {
    
    static 
id
    id 
ID_HUD
    
    
if(!is_user_connected(id)) {
        
remove_task(taskid)
        return
    }
    
    static 
CountPartyPartyMsg[256], Players[32], id2
    
    CountParty 
0
    PartyMsg
[0] = 0

    get_party_index
(idPlayers)
    for(new 
ig_PartyData[id][Amount_In_Party]; i++) {
        
        
id2 Players[i]
        
        if(
CountParty)
            
add(PartyMsgcharsmax(PartyMsg), "^n")
        
        
format(PartyMsgcharsmax(PartyMsg), "%s%s"strlen(PartyMsg) ? PartyMsg "^t^t^tMiembros del Party^n"g_PartyData[id2][UserName])
        
CountParty++
    }
        
    
set_hudmessage(2552552550.750.3406.01.0);
    
show_hudmessage(idPartyMsg)
}

public 
Time_Acept(UserTaskArgs[], taskid) {
    
    
taskid -= TASK_ACEPT;
    
    if(!
g_PartyData[taskid][In_Party]) {
        
        
client_print(UserTaskArgs[1], print_chat"%s %s cancelo la invitacion de party"TAGg_PartyData[taskid][UserName])
        
menu_destroy(UserTaskArgs[0])
        
show_menu(taskid0"^n"1)
    }
}

stock create_party(masterguest) {
    
    
set_party_member(mastermaster)
    
set_party_member(masterguest)
    
set_party_member(guestmaster)
    
set_party_member(guestguest)
    
    
set_party_vars(masterStart_Amount)
    
set_party_vars(guest, ++g_PartyData[master][Amount_In_Party])
}

stock add_party_user(masterguest) {
    
    new 
Players[32], memberamount g_PartyData[master][Amount_In_Party]
        
    
get_party_index(masterPlayers)
    
    for(new 
iamounti++) {
        
        
member Players[i]
        
        
set_party_member(guestmember)
        
set_party_member(memberguest)
        
g_PartyData[member][Amount_In_Party]++
        
    }
    
    
set_party_member(guestguest)
    
set_party_vars(guestamount+1)    
}

stock set_party_member(idid2)
    
ArrayPushCell(Party_Ids[id], id2)

stock set_party_vars(idamount) {
    
    
g_PartyData[id][In_Party] = true
    g_PartyData
[id][Position] = amount-1
    g_PartyData
[id][Amount_In_Party] = amount
    
}

stock destoy_party(id) {
    
    new 
Players[32], id2Amount g_PartyData[id][Amount_In_Party]
    
get_party_index(idPlayers)
    
    for(new 
iAmounti++) {
        
id2 Players[i]
        
clear_party_user(id2)
        
client_print(id2print_chat"%s La party fue destruida"TAG)
        
    }
}

stock remove_party_user(user) {
    
    new 
Players[32], idAmount g_PartyData[user][Amount_In_Party]
    
    
get_party_index(userPlayers)
    
    
clear_party_user(user)
    
    for(new 
iAmounti++) {
    
        
id Players[i]
        
        if(
id != user) {
            
            
ArrayClear(Party_Ids[id])
            
            for(new 
zAmountz++)                    
                if(
Players[z] != user)
                    
set_party_member(idPlayers[z])
                
            
g_PartyData[id][Position] = i
            g_PartyData
[id][Amount_In_Party] = Amount-1
            client_print
(idprint_chat"%s %s salio del party"TAGg_PartyData[user][UserName])
        }
    }
}

stock clear_party_user(id) {
    
    
ArrayClear(Party_Ids[id])
    
g_PartyData[id][In_Party] = false
    g_PartyData
[id][Position] = NONE
    g_PartyData
[id][Amount_In_Party] = NONE
    remove_task_party_hud
(id)
    
}

stock set_task_party_hud(id)
    
set_task(1.0"PartyHud"id+TASK_HUD__"b")
    
stock remove_task_party_hud(id)
    
remove_task(id+TASK_HUD)

stock remove_task_acept(id)
    if(
task_exists(id+TASK_ACEPT))
        
remove_task(id+TASK_ACEPT)
    

stock set_player_party_name(id) {
    
    if(
g_PartyData[id][UserName][0])
        return 
0
    
    get_user_name
(idg_PartyData[id][UserName], charsmax(g_PartyData[][UserName]))
    
    return 
1
}

stock is_available_to_party(id) {
    
    if(!
is_user_connected(id) || g_PartyData[id][In_Party] || g_PartyData[id][Block_Party])
        return 
false
    
    
return true
}        
    
stock get_party_index(idplayers[]) {
    
    for(new 
ig_PartyData[id][Amount_In_Party]; i++)
        
players[i] = ArrayGetCell(Party_Ids[id], i)
    
    return 
players[0] ? 0
}

public 
check_master(id)
    return 
g_PartyData[id][Position] ? ITEM_DISABLED ITEM_ENABLED
    
public check_user(id)
    return 
g_PartyData[id][Position] ? ITEM_ENABLED ITEM_DISABLED

public cmdSayTeam(id) {
    
    static 
Text[192]
    
read_args(Textcharsmax(Text))
    
remove_quotes(Text)
    
    
replace_all(Textcharsmax(Text), "%""")
    
    if(!
ValidMessage(Text) || !g_PartyData[id][In_Party]) {
        
        
client_print(idprint_chat,"%s Tu Mensaje es invalido o no te encuentras en un Party"TAG)
        return 
PLUGIN_HANDLED;
    }
    
    static 
Message[192], Players[32], id2Amount 
    Amount 
g_PartyData[id][Amount_In_Party]
    
    
get_party_index(idPlayers)
    
    
formatex(Messagecharsmax(Message), "^x04%s ^x03%s^x01 : %s"TAGg_PartyData[id][UserName], Text)
    
    for(new 
iAmounti++) {
        
        
id2 Players[i]
        
        
message_begin(MSG_ONE_UNRELIABLEg_MsgSayText_id2)
        
write_byte(id)
        
write_string(Message)
        
message_end()
    }
    
    return 
PLUGIN_HANDLED;
}

ValidMessage(text[]) {
    static 
leni
    len 
strlen(text)
    
    if(!
len)
        return 
false
    
    
for(0leni++) {
        if( 
text[i] != ' ' ) {
            return 
true
        
}
    }

    return 
false

De los errores se aprende, y de no usar proteccion tambien >.<[/i]
Responder
#2
Explicate Mas Creo,Porque osea Si queres Adaptalo Solo Hace un C&P (Bien Echo)

Y Para Dividir Exp
En Tu Funcion de Atacker xD

Código PHP:
new Player[32], usuarios;get_party_index(attackerPlayer)

if(
g_PartyData[attacker][Amount_In_Party]) {
            for(new 
0g_PartyData[attacker][Amount_In_Party]; i++)
            {
                
                
usuarios Player[i]
                
VariableExp[usuarios]++
                
Check(usuarios)
                
Check(i)
            } 


Creo que era asi nose,estoy apurado haciendo algunas cosas pacman capas este mal
Arroba
Responder
#3
(02/12/2014, 12:03 AM)jollero escribió: Explicate Mas Creo,Porque osea Si queres Adaptalo Solo Hace un C&P (Bien Echo)

Y Para Dividir Exp
En Tu Funcion de Atacker xD

Código PHP:
new Player[32], usuarios;get_party_index(attackerPlayer)

if(
g_PartyData[attacker][Amount_In_Party]) {
            for(new 
0g_PartyData[attacker][Amount_In_Party]; i++)
            {
                
                
usuarios Player[i]
                
VariableExp[usuarios]++
                
Check(usuarios)
                
Check(i)
            } 


Creo que era asi nose,estoy apurado haciendo algunas cosas pacman capas este mal

Osea el C&P lo ago con las lineas que estan osea la linea de el party public public_init en esa linea le pongo al zp? o como
De los errores se aprende, y de no usar proteccion tambien >.<[/i]
Responder
#4
Alguien sabe adaptar plugins zp a bb[size=large]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)