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

Dziwnie zachowujące się funkcje.


  • Zamknięty Temat jest zamknięty
11 odpowiedzi w tym temacie

#1 diggs

    Wszechwidzący

  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:229
  • Lokalizacja:Internet
Offline

Napisano 17.07.2011 19:30

Witam, mam problem z wykonywaniem się funkcji. Na problem ten już raz się natknąłem, lecz rozwiązałem go w dość nieelegancki sposób za pomocą taska. Tym razem wolał bym odkryć powód moich problemów, dlatego piszę tutaj bo mi się pomysły już wyczerpały.

Moj plugin wygląda tak (jest to tylko ogólna struktura):
public funkcja_glowna(id)
{
new name[32];
get_user_name(id, name, 31);

funkcja_wyswietl_id(id);

ColorChat(id, YELLOW, "Twoj nick to:^x04 %s.", name);
}

public funkcja_wyswietl_id(id)
{
ColorChat(id, YELLOW, "Twoj ID to:^x04 %d.", id);

gratis(id);

return PLUGIN_CONTINUE;
}

public gratis(id)
{
set_user_health(id, 100);

ColorChat(id, GREEN, "Gratisowo zostales uleczony.");

return PLUGIN_CONTINUE;
}


No dobra problem jest taki: w fukncja_glowna nie wyświetlany jest napis tak jakby funkcja kończyła się wraz z wywołaniem funkcja_wyswietl_id.

W czym tkwi problem?

Pewnie w jakieś pier**le ale ja już nie mam pomysłu.

Użytkownik diggs edytował ten post 17.07.2011 20:09

  • +
  • -
  • 0

cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
b_350_20_D91408_470002_FFFFFA_000000.png

cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
b_350_20_F8D241_B69427_0F100D_000000.png


#2 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 17.07.2011 23:13

usun returny :D
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#3 diggs

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:229
  • Lokalizacja:Internet
Offline

Napisano 18.07.2011 12:12

No dobra usunąłem return, poczekam na testerów i sprawdzę czy działa. W między czasie może ktoś podpowie mi kiedy używać return plugin handle/continue, bo czasami kompilator wywala błąd że funkcja powinna zwracać wartość, a czasami tak jak teraz nie. Po czym poznać czy funkcja powinna zwracać wartość, a kiedy nie (pomijając moment kiedy zwraca potrzebną nam wartość)?

EDIT:
Sprawdziłem i niestety nic to nie dało, return wywaliłem w obu funkcjach. Ktoś ma jeszcze jakiś pomysł?

Użytkownik diggs edytował ten post 18.07.2011 12:25

  • +
  • -
  • 0

cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
b_350_20_D91408_470002_FFFFFA_000000.png

cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
b_350_20_F8D241_B69427_0F100D_000000.png


#4 phoeniX

    Pomocny

  • Użytkownik

Reputacja: 12
Początkujący

  • Postów:56
  • GG:
  • Imię:Przemysław
  • Lokalizacja:Kobylany
Offline

Napisano 18.07.2011 12:48

@@ up,up
Returny nic nie dadzą w tym przypadku.

ColorChat(id, YELLOW, "Twoj ID to:^x04 %d.", id);

id - index .
Komenda id nie może być wykorzystana.
Jak to ma być SteamId To powinno wyglądać tak:

get_user_authid ( index, authid[], len ) 

Index to indeks gracza - od 1 do 32
authid[] - określa zmienną do której ma być zapisany Steam ID
len - tablica ( Najdłuższy Steam ID składa się z 34 bitów )

public funkcja_wyswietl_id(id)
{
new sid[35];
get_user_authid(id, sid, 34);
ColorChat(id, YELLOW, "Twoj ID to:^x04 %d.", sid);

gratis(id);

return PLUGIN_CONTINUE;
}


Cały kod:

public funkcja_glowna(id)
{
new name[32];
get_user_name(id, name, 31);

funkcja_wyswietl_id(id);

ColorChat(id, YELLOW, "Twoj nick to:^x04 %s.", name);
}

public funkcja_wyswietl_id(id)
{
new sid[35];
get_user_authid(id, sid, 34);
ColorChat(id, YELLOW, "Twoj ID to:^x04 %d.", sid);

gratis(id);

return PLUGIN_CONTINUE;
}

public gratis(id)
{
set_user_health(id, 100);

ColorChat(id, GREEN, "Gratisowo zostales uleczony.");

return PLUGIN_CONTINUE;
}

Użytkownik phoeniX edytował ten post 18.07.2011 12:51

  • +
  • -
  • 0

#5 diggs

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:229
  • Lokalizacja:Internet
Offline

Napisano 18.07.2011 12:52

@phoeniX - całkiem odbiegłeś od tematu, funkcje te które podałem tutaj są całkowicie przykładowe, w pluginie są one dużo bardziej skomplikowane. Chodziło w nich o pokazanie problemu.

Może ktoś ma jakiś pomysł, ale tym razem prosił bym na temat ;/
  • +
  • -
  • 0

cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
b_350_20_D91408_470002_FFFFFA_000000.png

cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
b_350_20_F8D241_B69427_0F100D_000000.png


#6 phoeniX

    Pomocny

  • Użytkownik

Reputacja: 12
Początkujący

  • Postów:56
  • GG:
  • Imię:Przemysław
  • Lokalizacja:Kobylany
Offline

Napisano 18.07.2011 12:54

@up
Napisz do mnie na gg albo pw.
  • +
  • -
  • 1

#7 exexe

    Pomocny

  • Użytkownik

Reputacja: 22
Życzliwy

  • Postów:63
  • Lokalizacja::)
Offline

Napisano 18.07.2011 12:57

Sprawdź to:
public funkcja_glowna(id)
{
new name[32];
get_user_name(id, name, 31);

ColorChat(id, YELLOW, "Twoj nick to:^x04 %s.", name);
funkcja_wyswietl_id(id);
}

public funkcja_wyswietl_id(id)
{
ColorChat(id, YELLOW, "Twoj ID to:^x04 %d.", id);
gratis(id);
}

public gratis(id)
{
set_user_health(id, 100);
ColorChat(id, GREEN, "Gratisowo zostales uleczony.");
}

  • +
  • -
  • 0

#8 diggs

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:229
  • Lokalizacja:Internet
Offline

Napisano 18.07.2011 13:13

@abcus - gdyby to było takie proste zrobił bym to ale wywołanie funkcji musi być przed wyświetleniem komendy.

Po raz kolejny piszę że te funkcje co podałem mają zobrazować wygląd pluginu i problem, funkcje w moim pluginie są o wiele bardziej skomplikowane.
  • +
  • -
  • 0

cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
b_350_20_D91408_470002_FFFFFA_000000.png

cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
b_350_20_F8D241_B69427_0F100D_000000.png


#9 exexe

    Pomocny

  • Użytkownik

Reputacja: 22
Życzliwy

  • Postów:63
  • Lokalizacja::)
Offline

Napisano 18.07.2011 13:30

Może to ?:
public funkcja_glowna(id)
{
new name[32];
get_user_name(id, name, 31);

funkcja_wyswietl_id(get_user_index(name));
ColorChat(id, YELLOW, "Twoj nick to:^x04 %s.", name);
}

public funkcja_wyswietl_id(id)
{
ColorChat(id, YELLOW, "Twoj ID to:^x04 %d.", id);
gratis(id);
}

public gratis(id)
{
set_user_health(id, 100);
ColorChat(id, GREEN, "Gratisowo zostales uleczony.");
}

  • +
  • -
  • 0

#10 diggs

    Wszechwidzący

  • Autor tematu
  • Użytkownik

Reputacja: 28
Życzliwy

  • Postów:229
  • Lokalizacja:Internet
Offline

Napisano 18.07.2011 14:23

Rozwiązane, problem był w przekroczonym indeksie w jednej z wykorzystywanych tabel w funkcji gratis(id).

@abcus - rozumiem że nie podałem wszystkich informacji, np logów o których przypomniał mi phoeniX i to z nich doszliśmy do wniosku że problemem jest przekroczony index tabeli, ale to nie powód, żeby tak bezsensownie strzelać i nabijać sobie posty.

Temat rozwiązanym można zamknąć, plus dla phoeniX. Wielkie dzięki stary ;]
  • +
  • -
  • 0

cFun.pl BaseBuilderPro v6.5.8 Tirant edit by diggs
IP: 80.82.16.66:27034
b_350_20_D91408_470002_FFFFFA_000000.png

cFun.pl Only AWP - 1000 FPS [SkinsMod]
IP: 80.72.42.113:27015
b_350_20_F8D241_B69427_0F100D_000000.png


#11 exexe

    Pomocny

  • Użytkownik

Reputacja: 22
Życzliwy

  • Postów:63
  • Lokalizacja::)
Offline

Napisano 18.07.2011 15:03

Ktoś stara Ci się jakoś pomóc, a Ty jeszcze masz do niego pretensje, że nabija posty.
Nie podałeś dokładnego .sma funkcji i dziwisz się, że dałem Ci takie a nie inne rozwiązanie, pomyśl nad czym co piszesz.
Szkoda mi takich ludzi jak Ty.

Użytkownik abcus edytował ten post 18.07.2011 15:04

  • +
  • -
  • 0

#12 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 18.07.2011 17:53

co do return'ow jesli juz raz w funkcji uzyjesz returna ktory zwraca wartosc to na koncu funkcji tez musi byc jakas wartosc zwrocona jesli funkcja ma sie zawsze wykonac cala (ma nie konczyc sie gdzies w srodku) to returny sa zbędne chyba ze chodzi o forward wtedy odpowiedni return moze zatrzymac zdarzenie z forwardu lub zwrocic do pluginu obslugującego forward jakąś wartosc :D
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D




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

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