Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
Natyw zwracający nazwę klasy
Started By bluu, 15.02.2012 19:56
15 replies to this topic
#1
Posted 15.02.2012 19:56
Witam. Wie ktoś może jak dodać natyw w diablo modzie 5.9, który zwracałby nazwę klasy?
#2
Posted 15.02.2012 21:08
Tak. Robisz poprostu natyw a w natywie kopiujesz nazwe klasy do tablicy która powinna być w parametrze funkcji
Pseudo kod:
Pseudo kod:
public ZwrocNazweKlasy( id, tablica, len ){
copy( tablica, len, klasa_gracza );
}
#3
Posted 15.02.2012 21:52
a mógłbyś mi powiedzieć co i jak w kodzie zrobić żeby ten natyw dodać? Bo nie potrafię dodawać natywów
#5
Posted 16.02.2012 12:42
Zrobiłem tak: i nie zwraca nazwy
w diablomod.inc:
native db_get_user_class_name(id, tablica[], len);
register_native("db_get_user_class_name", "ZwrocNazweKlasy", 1)
}
public ZwrocNazweKlasy(id, tablica[], len){
copy(tablica, len, player_class);
}
w diablomod.inc:
native db_get_user_class_name(id, tablica[], len);
Edited by bluu, 16.02.2012 12:43.
#6
Posted 16.02.2012 13:43
Tamto był pseudo kod, a pod zmienną player_class miałeś podstawić zmienną z nazwą klas. Proszę gotowy kod, powinno działać.
Użycie:
Powyższy kod kopiuje nazwe aktualnej klasy do zmiennej.
public ZwrocNazweKlasy(id, tablica[], len){
copy(tablica, len, Race[ player_class[ id ] ]);
}
Użycie:
new szText[ 128 ];
ZwrocNazweKlasy( id, szText, charsmax( szText ) );
Powyższy kod kopiuje nazwe aktualnej klasy do zmiennej.
#7
Posted 16.02.2012 14:24
Podmieniłem tamto w .sma i skompilowałem ale nie wiem co zrobić z tym "Użycie:" i co teraz wpisać w diablomod.inc
Mógłbyś mi to podstawić w tym pluginie? Aby to chodziło.
Mógłbyś mi to podstawić w tym pluginie? Aby to chodziło.
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <diablomod>
#define PLUGIN "Prefixy COD"
#define VERSION "1.0"
#define AUTHOR "DarkGL"
new pCvarPrefixy;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_message(get_user_msgid("SayText"),"handleSayText");
pCvarPrefixy = register_cvar("cod_prefix","1");
}
public handleSayText(msgId,msgDest,msgEnt){
new id = get_msg_arg_int(1);
if(!is_user_connected(id)) return PLUGIN_CONTINUE;
new szTmp[256],szTmp2[256],szTmp3[256];
get_msg_arg_string(2,szTmp, charsmax( szTmp ) )
new szPrefix[64]
switch(get_pcvar_num(pCvarPrefixy)){
case 1:{
db_get_user_class_name(db_get_user_class(id),szTmp3,charsmax( szTmp3 ))
formatex(szPrefix,charsmax( szPrefix ),"^x04[%s]",szTmp3);
}
case 2:{
formatex(szPrefix,charsmax( szPrefix ),"^x04[%d]",db_get_user_level(id));
}
case 3:{
db_get_user_class_name(db_get_user_class(id),szTmp3,charsmax( szTmp3 ))
formatex(szPrefix,charsmax( szPrefix ),"^x04[%s - %d]",szTmp3,db_get_user_level(id));
}
}
if(!equal(szTmp,"#Cstrike_Chat_All")){
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
}
set_msg_arg_string(2,szTmp2);
return PLUGIN_CONTINUE;
}
Edited by bluu, 16.02.2012 14:24.
#8
Posted 16.02.2012 14:31
Sprawdź to:
#include <amxmodx>
#include <diablomod>
#define PLUGIN "Prefixy COD"
#define VERSION "1.0"
#define AUTHOR "DarkGL"
new pCvarPrefixy;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_message(get_user_msgid("SayText"),"handleSayText");
pCvarPrefixy = register_cvar("cod_prefix","1");
}
public handleSayText(msgId,msgDest,msgEnt){
new id = get_msg_arg_int(1);
if(!is_user_connected(id)) return PLUGIN_CONTINUE;
new szTmp[256],szTmp2[256],szTmp3[256];
get_msg_arg_string(2,szTmp, charsmax( szTmp ) )
new szPrefix[64]
switch(get_pcvar_num(pCvarPrefixy)){
case 1:{
db_get_user_class_name(id,szTmp3,charsmax( szTmp3 ))
formatex(szPrefix,charsmax( szPrefix ),"^x04[%s]",szTmp3);
}
case 2:{
formatex(szPrefix,charsmax( szPrefix ),"^x04[%d]",db_get_user_level(id));
}
case 3:{
db_get_user_class_name(db_get_user_class(id),szTmp3,charsmax( szTmp3 ))
formatex(szPrefix,charsmax( szPrefix ),"^x04[%s - %d]",szTmp3,db_get_user_level(id));
}
}
if(!equal(szTmp,"#Cstrike_Chat_All")){
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
}
set_msg_arg_string(2,szTmp2);
return PLUGIN_CONTINUE;
}
#9
Posted 16.02.2012 14:46
Są błędy, a i jeszcze jedno co wpisać w diablomod.inc
(22) 010: invalid function or declaration
(22) 001: expected token ")", but found "sizeof"
(22) 010: invalid function or declaration
(22) 107: too many error messages on one line
(22) 010: invalid function or declaration
(22) 001: expected token ")", but found "sizeof"
(22) 010: invalid function or declaration
(22) 107: too many error messages on one line
Edited by bluu, 16.02.2012 14:54.
#10
Posted 16.02.2012 15:07
W diablomod.inc wpisz:
Sprawdź ponownie.
native db_get_user_class_name(id, tablica[], len);
Sprawdź ponownie.
#include <amxmodx>
#include <diablomod>
#define PLUGIN "Prefixy COD"
#define VERSION "1.0"
#define AUTHOR "DarkGL"
new pCvarPrefixy;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_message(get_user_msgid("SayText"),"handleSayText");
pCvarPrefixy = register_cvar("cod_prefix","1");
}
public handleSayText(msgId,msgDest,msgEnt){
new id = get_msg_arg_int(1);
if(!is_user_connected(id))
return PLUGIN_CONTINUE;
new szTmp[256],szTmp2[256], szTmp3[256], szPrefix[64];
get_msg_arg_string(2,szTmp, charsmax( szTmp ) )
switch(get_pcvar_num(pCvarPrefixy)){
case 1:{
db_get_user_class_name(id, szTmp3, charsmax( szTmp3 ));
formatex(szPrefix,charsmax( szPrefix ),"^x04[%s]",szTmp3);
}
case 2:{
formatex(szPrefix,charsmax( szPrefix ),"^x04[%d]",db_get_user_level(id));
}
case 3:{
db_get_user_class_name(id, szTmp3, charsmax( szTmp3 ));
formatex(szPrefix,charsmax( szPrefix ),"^x04[%s - %d]",szTmp3,db_get_user_level(id));
}
}
if(!equal(szTmp,"#Cstrike_Chat_All")){
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2)," ");
add(szTmp2,charsmax(szTmp2),szTmp);
}
else{
add(szTmp2,charsmax(szTmp2),szPrefix);
add(szTmp2,charsmax(szTmp2),"^x03 %s1^x01 : %s2");
}
set_msg_arg_string(2,szTmp2);
return PLUGIN_CONTINUE;
}
#11
Posted 16.02.2012 15:53
Co do kodu muzzika, to chyba jako parametry natywu powinny być plugin i params
#12
Posted 16.02.2012 15:58
Wszystko się ładnie skompilowało ale nadal nie wyświetla nazwy klasy.
#13
Posted 16.02.2012 16:18
Nic nie pokazuje, czyli są poprostu puste klamry. ( [ ] - itp. ). Zgadza się ?
#14
Posted 16.02.2012 16:19
jest klamra [ - 5] przykładowo.
Level pokazuje ale przy nazwie klasy jest pusta spacja.
Level pokazuje ale przy nazwie klasy jest pusta spacja.
#15
Posted 16.02.2012 16:32
Jesteś pewien iż funkcje natywne w głównym pliku z DiabloModem są dobrze napisane ?
#16
Posted 16.02.2012 16:37
Wycinek1:
Wycinek2:
register_library("DiabloMod_Items");
register_native("diablo_send_user_item", "_diablo_send_user_item");
register_native("diablo_get_user_item", "_diablo_get_user_item");
register_native("db_get_user_class_name", "ZwrocNazweKlasy", 1)
register_native("db_get_user_xp", "native_get_user_xp", 1)
register_native("db_set_user_xp", "native_set_user_xp", 1)
Wycinek2:
public dmg_exp(id)
{
new min=get_cvar_num("diablo_dmg_exp")
if(min<1) return
new exp=0
while(player_dmg[id]>min)
{
player_dmg[id]-=min
exp++
}
Give_Xp(id,exp)
}
public ZwrocNazweKlasy(id, tablica[], len){
copy(tablica, len, Race[ player_class[ id ] ]);
}
public native_get_user_xp(id)
{
return player_xp[id]
}
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users