Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Natyw zwracający nazwę klasy


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
15 odpowiedzi w tym temacie

#1 bluu

    Życzliwy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:35
  • Lokalizacja:GKW
Offline

Napisano 15.02.2012 19:56

Witam. Wie ktoś może jak dodać natyw w diablo modzie 5.9, który zwracałby nazwę klasy?
  • +
  • -
  • 0

#2 Muzzi

    Guru

  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 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:

public ZwrocNazweKlasy( id, tablica, len ){
copy( tablica, len, klasa_gracza );
}

  • +
  • -
  • 1

#3 bluu

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:35
  • Lokalizacja:GKW
Offline

Napisano 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 ;P
  • +
  • -
  • 0

#4 Muzzi

    Guru

  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 15.02.2012 22:23

http://amxx.pl/topic/20034-natywy/
  • +
  • -
  • 1

#5 bluu

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:35
  • Lokalizacja:GKW
Offline

Napisano 16.02.2012 12:42

Zrobiłem tak: i nie zwraca nazwy

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);

Użytkownik bluu edytował ten post 16.02.2012 12:43

  • +
  • -
  • 0

#6 Muzzi

    Guru

  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 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ć.


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.
  • +
  • -
  • 1

#7 bluu

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:35
  • Lokalizacja:GKW
Offline

Napisano 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.

 /* 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;
}

Użytkownik bluu edytował ten post 16.02.2012 14:24

  • +
  • -
  • 0

#8 Muzzi

    Guru

  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 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;
}


  • +
  • -
  • 0

#9 bluu

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:35
  • Lokalizacja:GKW
Offline

Napisano 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

Użytkownik bluu edytował ten post 16.02.2012 14:54

  • +
  • -
  • 0

#10 Muzzi

    Guru

  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 16.02.2012 15:07

W diablomod.inc wpisz:

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;
}



  • +
  • -
  • 0

#11 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 16.02.2012 15:53

Co do kodu muzzika, to chyba jako parametry natywu powinny być plugin i params
  • +
  • -
  • 0

#12 bluu

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:35
  • Lokalizacja:GKW
Offline

Napisano 16.02.2012 15:58

Wszystko się ładnie skompilowało ale nadal nie wyświetla nazwy klasy.
  • +
  • -
  • 0

#13 Muzzi

    Guru

  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 16.02.2012 16:18

Nic nie pokazuje, czyli są poprostu puste klamry. ( [ ] - itp. ). Zgadza się ?
  • +
  • -
  • 0

#14 bluu

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:35
  • Lokalizacja:GKW
Offline

Napisano 16.02.2012 16:19

jest klamra [ - 5] przykładowo.
Level pokazuje ale przy nazwie klasy jest pusta spacja.
  • +
  • -
  • 0

#15 Muzzi

    Guru

  • Przyjaciel

Reputacja: 228
Wszechwidzący

  • Postów:772
  • Lokalizacja:Kraków
Offline

Napisano 16.02.2012 16:32

Jesteś pewien iż funkcje natywne w głównym pliku z DiabloModem są dobrze napisane ?
  • +
  • -
  • 0

#16 bluu

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:35
  • Lokalizacja:GKW
Offline

Napisano 16.02.2012 16:37

Wycinek1:
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]
}

  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych