←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

consty etc.

Optymalny193 - zdjęcie Optymalny193 02.05.2011

Cześć.
Mam poważne pytanie.
Coś podobne do CodModa a więc już opisuje:
Robie sobie np. takie coś:

new const nazwy_itemow[][] = {"Podwojna apteczka",
"Apteczka",
"Ciche Buty",
"Kamizelka",
"Scyzoryk Wojskowy"
};

i jak do tego zrobic case np. podwojna apteczka cos robi i tak z innymi. Najlepiej jakby ktos napisal mi podstawowy plugin zebym to zrozumial.
2 pytanie to jak zrobic zeby te itemy w const dostawalo sie po jakims zadaniu np. za 20 hs ma apteczke na 1 runde czy iles tam i niech ktos all opisze w pluginie komentarzem // .......
3 pytanie jak zrobic ze te itemy tez mozna kupic w sklepie, np. cos kupuje i to dostaje na 1 runde.
4 pytanie o co chodzi z ENUM i jak i gdzie to użyć/używać?
np. w sklepie jak cos kupie to co zrobic zeby dostac to enum i co zrobic zeby to enum cos robilo/dawalo.

Za wytlumaczenie min. 1 pytanie jest 1 plus i tak dalej.
za dobrze wytlumaczone 1 pytanie sa 2 plusy i tak dalej.

Pozdrawiam Optymalny193.
Odpowiedz

  • +
  • -
Goliath - zdjęcie Goliath 02.05.2011

1. Myślę, że do tego będzie potrzebna nowa zmienna.
new item_gracza[33];

Ale z tego co widzę, to tabela z itemami ma wyglądać tak:
new const nazwy_itemow[][] = {"Brak",
"Podwojna apteczka",
"Apteczka",
"Ciche Buty",
"Kamizelka",
"Scyzoryk Wojskowy"
};

A co do funkcji switch, to ma wyglądać to tak:
switch(item_gracza[id])
{
case 1:
{
//co ma robić item nr. 1
}
case 2:
{
//co ma robić item nr. 2
}
...
}

Musisz też, gdzieś wcześniej, dodać losowanie tego itemu:
item_gracza[id] = random_num(1, sizeof nazwy_itemow-1);

2. Zależy jakie mają być te zadania.
3. Jeżeli nie wiesz jak robić sklep, wzoruj się np. na tym z CoD'a. W funkcji sklepu musisz dodać:
item_gracza[id] = id itemu;

4. Link
Odpowiedz

Optymalny193 - zdjęcie Optymalny193 02.05.2011

Ok za 4 dzięki i masz +
Ale nadal nie rozumiem 3 punktów

zrób mi tak
w const np. itemy do sklepu czyli:
100hp, 300speeda, i klasa która ma dgl
i pokaż jak ma to wyglądać

najlepiej nie jak item i nie jak losowanie tylko wybieranie bądź kupowanie.
Użytkownik Optymalny193 edytował ten post 02.05.2011 20:11
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 03.05.2011

a może troche samodzielności poczytać troche tutkow a nie odrazu na moda sie rzucac ?
Odpowiedz

Optymalny193 - zdjęcie Optymalny193 03.05.2011

jak sa tutki do tego to gdzie bo szukalem i nie znalazlem.
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 03.05.2011

analiza pluginów / metoda prób i błędów przynajmniej ja tak robiłem na początku
Odpowiedz

  • +
  • -
diablix - zdjęcie diablix 03.05.2011

analiza pluginów / metoda prób i błędów przynajmniej ja tak robiłem na początku


Dark dobrze mówi najlepiej zacząć od przerabiania i analizowania innych pluginów
Odpowiedz

Optymalny193 - zdjęcie Optymalny193 03.05.2011

Ok dzięki.
DarkGL i diablix ale mnie pocieszyliście (tyle roboty ;f)
Użytkownik Optymalny193 edytował ten post 03.05.2011 20:19
Odpowiedz

GoldeN - zdjęcie GoldeN 03.05.2011

Ok dzięki.
Temat do zamknięcia.
DarkGL i diablix ale mnie pocieszyliście (tyle roboty ;f)


A co Ty myślisz, że siądziesz i od razu napiszesz moda? -.-
Skoro tyle roboty, to nie zabieraj się za to, bo większość z nas, uczy się tego bo lubi, a nie po to, by wydać kolejny z d*py mod na którym nikt nie gra.
Odpowiedz

Optymalny193 - zdjęcie Optymalny193 03.05.2011

Goliath, mam tak i mam jeszcze zmienna wyżej:


new const nazwy_itemow[][] = {"Brak",
"+100hp",
"Grawitacja",
"Szybkie Buty",
"Okradniecie",
"Losowanie"
};

switch(item_gracza[id])
{
case 1:
{
set_pev(id, pev_health, pev(id, pev_health) + 100);
}
case 2:
{
set_pev(id, pev_gravity, pev(id, pev_gravity) - 20);
}
case 3:
{
}
case 4:
{
}
case 5:
{
}
}


Ale pisałeś żeby losować item a ja chce zrobić sklep (czyli że kupić nie losować) jak byś mi od razu zrobił gotowy sklep z tym to 4 plusów jako nagroda, ja się uczę a z const w sklepie nigdy nie miałem przyjemności z góry dzięki
Odpowiedz

GoldeN - zdjęcie GoldeN 03.05.2011

Goliath, mam tak i mam jeszcze zmienna wyżej:


new const nazwy_itemow[][] = {"Brak",
"+100hp",
"Grawitacja",
"Szybkie Buty",
"Okradniecie",
"Losowanie"
};

switch(item_gracza[id])
{
case 1:
{
set_pev(id, pev_health, pev(id, pev_health) + 100);
}
case 2:
{
set_pev(id, pev_gravity, pev(id, pev_gravity) - 20);
}
case 3:
{
}
case 4:
{
}
case 5:
{
}
}


Ale pisałeś żeby losować item a ja chce zrobić sklep (czyli że kupić nie losować) jak byś mi od razu zrobił gotowy sklep z tym to 4 plusów jako nagroda, ja się uczę a z const w sklepie nigdy nie miałem przyjemności z góry dzięki


Dodatki > Pluginy i szukaj sklepów.
Odpowiedz

Optymalny193 - zdjęcie Optymalny193 04.05.2011

GoldeN po co piszesz daj lepiej linka to dostaniesz przynajmniej plusa
Ja się pytam Goliatha bo w sklepie nie dam rady wylukać co potrzeba.

Dodano 04 maj 2011 - 19:14:
edit@

Czy to będzie działało tak jak ja chce?
Sma:

new item_gracza[33];

new const nazwy_itemow[][] = {"Brak",
"+100hp",
"Double Blast",
"Racket Fuel",
"Okradniecie",
"Losowanie"
};

new const opisy_itemow[][] = {"Brak",
"Dodaje ci 100hp",
"Masz zmniejszona grawitacje przez 5sek.",
"Jestes szybki przez 5sek.",
"Mozesz okradnac gracza",
"Tajemnicze losowanie :)"
};

public DodajMocItemu(id){
switch(item_gracza[id])
{
case 1:
{
set_pev(id, pev_health, pev(id, pev_health) + 100);
ColorChat(id,GREEN,"Brawo. Zakupiles +100hp");
}
case 2:
{
set_pev(id, pev_gravity, pev(id, pev_gravity) - 100);
ColorChat(id,RED,"Brawo. Masz mniejsza grawitacje przez 5sek.");
set_task(5.0, "normalgrava", 0, "", 0, "b");
}
case 3:
{
set_pev(id, pev_speed, pev(id, pev_speed) + 95);
ColorChat(id,GREEN,"Brawo. Jestes szybki przez 5sek.");
set_task(5.0, "normalspeed", 0, "", 0, "b");
}
case 4:
{
ColorChat(id,GREEN,"Brawo. Zakupiles +100hp");
}
case 5:
{
ColorChat(id,GREEN,"Poczekaj 3sek, a moze cos wylosujesz :)");
set_task(3.0, "losowanie", 0, "", 0, "b");
}
}
}


public normalspeed(id){
set_pev(id, pev_speed, pev(id, pev_speed) - 95);
ColorChat(id,GREEN,"Uuuu, Juz biegasz normalnie");
}

public normalgrava(id){
set_pev(id, pev_gravity, pev(id, pev_gravity) +100);
ColorChat(id,GREEN,"Przykro nam, skonczyla ci sie grawitacja");
}

public losowanie(id){
new losik = random_num(0,11)

switch(losik) {
case 0: {

}
case 1: {
give_item(id, "weapon_smokegrenade");
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
ColorChat(id, GREEN, "^x01 Wylosowales zestaw granatow");
}
case 2: {
give_item( id, "weapon_awp" );
cs_set_user_bpammo(id, CSW_AWP, 0);
cs_set_weapon_ammo( find_ent_by_owner( 1, "weapon_awp", id ), 1);
ColorChat(id, GREEN, "^x01 Wylosowales awp z 1nabojem,^x04 GJ.");
}
case 3: {
give_item(id, "weapon_hegrenade");
ColorChat(id, GREEN, "^x01 Wylosowales HE");
}
case 4: {
give_item(id, "weapon_smokegrenade");
ColorChat(id, GREEN, "^x01 Wylosowales SMOKE");
}
case 5: {
give_item(id, "weapon_flashbang");
give_item(id, "weapon_flashbang");
ColorChat(id, GREEN, "^x01 Wylosowales 2x FLASHBANG");
}
case 6: {
give_item(id, "weapon_flashbang");
ColorChat(id, GREEN, "^x01 Wylosowales FLASHBANG");
}
case 7: {
PlayerMoney[id] += 7;
ColorChat(id, GREEN, "^x01 Wylosowales 7Money");
}
case 8: {
PlayerMoney[id] += 12;
ColorChat(id, GREEN, "^x01 Wylosowales 12Money");
}
case 9: {

give_item( id, "weapon_deagle" );
cs_set_user_bpammo(id, CSW_DEAGLE, 0);
cs_set_weapon_ammo( find_ent_by_owner( 1, "weapon_deagle", id ), 1);
ColorChat(id, GREEN, "^x01 Wylosowales^x04 Deagla^x01 z^x04 1^x01 nabojem");
}
case 10: {
give_item( id, "weapon_p228" );
cs_set_user_bpammo(id, CSW_P228, 0);
cs_set_weapon_ammo( find_ent_by_owner( 1, "weapon_p228", id ), 1);
ColorChat(id, GREEN, "^x01Wylosowales^x04 p228^x01 z^x04 1^x01 nabojem");
}
case 11: {
give_item( id, "weapon_elite" );
cs_set_user_bpammo(id, CSW_ELITE, 0);
cs_set_weapon_ammo( find_ent_by_owner( 1, "weapon_elite", id ), 1);
ColorChat(id, GREEN, "^x01Wylosowales^x04 elitki^x01 z^x04 1^x01 nabojem");
}
}
}


Dam plusa za poprawienie
Oczywiscie potem sobie odejme kase w tym sklepie bo umiem :) i jakby ktos dorobil sprawdzanie i losowanie kazdy np. 5money

daje 3plusy.

Dodano 05 maj 2011 - 14:02:
ref
Odpowiedz

mierzwi - zdjęcie mierzwi 05.05.2011

typie, taka prawda jak wyżej piszą, jesteś haga każdy o tym wie no ale cóż, nie pisz takich rzeczy na początku, zacznij od czegoś easy, i nie bądź tak "optymalny" na początku że only fakemeta, bo jak od razu piszesz całość w fakemeta, to ciężko Ci będzie znaleźć za wszystko odpowiednik, napisz w kilku modułach, aby działało, później zmieniaj na "optymalny" -.- a co do tego

set_task(5.0, "normalgrava", 0, "", 0, "b");

chyba raz chcesz wykonać tą funkcję ?

set_task( 5.0, "normalgrava", id + 666 );

w normal grava:

public normalgrava(id){
        id -= 666;

        set_pev(id, pev_gravity, pev(id, pev_gravity) +100); // WHAT THE *** ? HAHA D:
        ColorChat(id,GREEN,"Przykro nam, skonczyla ci sie grawitacja");
}

poprawiłem Ci 1 task, reszty się nie chce bo to podstawy, ale powinieneś sam to obczaić co zrobiłeś źle ;d
Użytkownik funfel edytował ten post 05.05.2011 14:12
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 05.05.2011

nie bądź tak "optymalny" na początku że only fakemeta

a kto powiedzial że fakemeta jest optymalna :lol:
Odpowiedz

mierzwi - zdjęcie mierzwi 05.05.2011

wszystko obciąża serv, ale chyba fake > fun tak ?
Użytkownik funfel edytował ten post 05.05.2011 15:33
Odpowiedz

Optymalny193 - zdjęcie Optymalny193 05.05.2011

na czym polegaja te bledy:

 [ENGINE] Invalid entity 77
L 05/05/2011 - 17:06:13: [AMXX] Run time error 10 (plugin "MoneyMod.amxx") (native "entity_get_string") - debug not enabled!
L 05/05/2011 - 17:06:13: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
L 05/05/2011 - 17:06:18: [ENGINE] Invalid entity 78
L 05/05/2011 - 17:06:18: [AMXX] Run time error 10 (plugin "MoneyMod.amxx") (native "entity_get_string") - debug not enabled!
L 05/05/2011 - 17:06:18: [AMXX] To enable debug mode, add "debug" after the plugin name in plugins.ini (without quotes).
George killed Alfred with knife
L 05/05/2011 - 17:06:18: String formatted incorrectly - parameter 7 (

No i mam buga
jak klikne w sklep to pisze nie zakupiles itemu i jak klikne na rzecz to pisze nie zakupiles itemy.
Plusy!

Dodano 05 maj 2011 - 20:37:
Refresh

Dodano 05 maj 2011 - 20:37:
Refresh

Dodano 06 maj 2011 - 12:58:
ref
Odpowiedz

mierzwi - zdjęcie mierzwi 06.05.2011

może sma ?
Odpowiedz

Optymalny193 - zdjęcie Optymalny193 06.05.2011

jak klikne w sklep to pisze nie zakupiles itemu i jak klikne na rzecz to pisze nie zakupiles itemy
i jak wchodze w sklep i wychodze to pisze nie kupiles zadnego itemu.
jak to naprawic?
tu masz kawalek kodu:


new const nazwy_itemow[][] = {"Brak",
"+100hp",
"Double Blast",
"Racket Fuel",
"Okradniecie",
"Losowanie"
};

new const opisy_itemow[][] = {"Brak",
"Dodaje ci 100hp",
"Masz zmniejszona grawitacje przez 5sek.",
"Jestes szybki przez 5sek.",
"Mozesz okradnac gracza",
"Tajemnicze losowanie :)"
};

public DodajMocItemu(id){
switch(item_gracza[id])
{
case 1:
{
set_pev(id, pev_health, pev(id, pev_health) + 100);
ColorChat(id,GREEN,"Brawo. Zakupiles +100hp");
PlayerKoks[id] -= 1;
}
case 2:
{
set_pev(id, pev_gravity, pev(id, pev_gravity) - 100);
ColorChat(id,RED,"Brawo. Masz mniejsza grawitacje przez 5sek.");
set_task( 5.0, "normalgrava", id + 666 );
PlayerKoks[id] -= 1;
//set_task(5.0, "normalgrava", 0, "", 0, "b");
}
case 3:
{
set_pev(id, pev_speed, pev(id, pev_speed) + 95);
ColorChat(id,GREEN,"Brawo. Jestes szybki przez 5sek.");
set_task( 5.0, "normalspeed", id + 666 );
PlayerKoks[id] -= 1;
}
case 4:
{
ColorChat(id,GREEN,"Brawo. Zakupiles +100hp");
PlayerKoks[id] -= 1;
}
case 5:
{
ColorChat(id,GREEN,"Poczekaj, a moze cos wylosujesz :)");
set_task( 1.0, "losowanie", id + 666 );
PlayerKoks[id] -= 1;
}
}
}





public WybierzItem(id)
{
new menu = menu_create("Sklep za Koksy", "WybierzItem_Handle");
new item[50];
for(new i=1; i<sizeof nazwy_itemow; i++)
{
format(item, 49, "%s", nazwy_itemow[i]);
menu_additem(menu, item);
}

menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);

WybierzItem_Handle(id, menu, random(sizeof nazwy_itemow-1));
}

public WybierzItem_Handle(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

item++;

if(item == item_gracza[id])
return PLUGIN_CONTINUE;

if(item_gracza[id])
{
item_gracza[id] = item;
ColorChat(id, GREEN, "Nie zakupiles zadnego itemu");
}
else
{
item_gracza[id] = item;
DodajMocItemu(id);
}
return PLUGIN_CONTINUE;
}

public KoksSklepOpis(id)
{
new menu = menu_create("Jaki opis chcesz zobaczyc?", "KoksSklepOpis_Handle");
for(new i=1; i<sizeof nazwy_itemow; i++)
menu_additem(menu, nazwy_itemow[i]);
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);

}

public KoksSklepOpis_Handle(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
client_print(id, print_chat, "%s: %s", nazwy_itemow[item+1], opisy_itemow[item+1]);
menu_display(id, menu);

return PLUGIN_CONTINUE;
}



I przy okazji dlaczego jak dalem sobie tutora

i robie tak:

public DeathMsg()
{
new kid = read_data(1)
new hs = read_data(3)
if(QuestDgl10HS[kid] && hs)
HSy[kid]+=1
if(HSy[kid]>=10)
{
PlayerMoney[kid] += 250;
new Text[ 100 ]
formatex(Text,191,"Quest 10 zabic z DEAGLE zostal ukonczony")
MakeTutor(id,Text,TUT_GREEN,5.5);
}
if(QuestAwp10HS[kid] && hs)
HS[kid]+=1
if(HS[kid]>=10)
{
PlayerMoney[kid] += 500;
new Text[ 100 ]
formatex(Text,191,"Quest 10 zabic z AWP zostal ukonczony")
MakeTutor(id,Text,TUT_GREEN,5.5)
}
}


TO sie skompilowac nie da

Błędy:
Error: Undefined symbol "id" on line 509
Warning: Expression has no effect on line 509
Warning: Expression has no effect on line 509
Warning: Expression has no effect on line 509
Error: Expected token: ";", but found ")" on line 509
Error: Invalid expression, assumed zero on line 509
Error: Too many error messages on one line on line 509

Użytkownik Optymalny193 edytował ten post 06.05.2011 16:28
Odpowiedz

mierzwi - zdjęcie mierzwi 06.05.2011

albo całe sma albo nic, bo z takich skrawków to tyle można wiedzieć że nic ;d

a co do tego :
public WybierzItem_Handle(id, menu, item)
{       
        if(item == MENU_EXIT)
        {
                menu_destroy(menu);
                return PLUGIN_CONTINUE;
        }       
        
        item++;
        
        if(item == item_gracza[id])
                return PLUGIN_CONTINUE;
        
        if(item_gracza[id])
        {
                item_gracza[id] = item;
                ColorChat(id, GREEN, "Nie zakupiles zadnego itemu");
        }
        else
        {
                item_gracza[id] = item;
                DodajMocItemu(id);
        }
        return PLUGIN_CONTINUE;
}
nie wiem co to jest :
item++;
        
        if(item == item_gracza[id])
                return PLUGIN_CONTINUE;
        
        if(item_gracza[id])
        {
                item_gracza[id] = item;
                ColorChat(id, GREEN, "Nie zakupiles zadnego itemu");
        }
        else
        {
                item_gracza[id] = item;
                DodajMocItemu(id);
        }
        return PLUGIN_CONTINUE;
moze tak zadziała :
if(item == MENU_EXIT)
{
     menu_destroy(menu);
     return PLUGIN_CONTINUE;
}      

if(item_gracza[id] == item) /* nie wiem ale ty tak masz <img src='http://img.amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.gif' class='bbc_emoticon' alt=':D' />*/;
/*else if(koszt jakis tam) */ // <--- jak bys chcial koszt dodac ;d
else item_gracza[id] = item; DodajMocItemu(id);
tak ogolnie nie wiem oco chodzi z tym item_gracza ale kij z tym ;d
i jeszcze :
MakeTutor(id,Text,TUT_GREEN,5.5);
nie widze nigdzie tam id, więc po co id? widze dobre copy -> paste z innego pluginu -.- daj kid... a po 2, gdzie sprawdzasz broń jaką zabija ? bo ja tego nie widze wtf...

i jeszcze w formatex jak dajesz pojemność lena na 100, to po co piszesz w formatex 191? daj formatex( Text, sizeof ( Text ) - 1, "twoj msg" );
Użytkownik funfel edytował ten post 06.05.2011 17:54
Odpowiedz

Optymalny193 - zdjęcie Optymalny193 06.05.2011

sklep z coda, bo nigdy nie tworzyłem sklepu przez const

@@funfel
NIE COPY!!
z tutora wziąłem sobie .
@@EDIT
Jak pobrać zabójstwa z jakiejś broni, kiedyś takie coś robiłem tylko zapomniałem jak :D

Dodano 06 maj 2011 - 19:36:
Dałem tak

public WybierzItem_Handle(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}

if(item_gracza[id] == item) /* nie wiem ale ty tak masz :D*/;
/*else if(koszt jakis tam) */ // <--- jak bys chcial koszt dodac ;d
else item_gracza[id] = item; DodajMocItemu(id);
}

I błędy:


Error: Empty statement on line 652
Warning: Function "WybierzItem_Handle" should return a value on line 655

652 linijka:
if(item_gracza[id] == item) /* nie wiem ale ty tak masz <img src='http://img.amxx.pl/public/style_emoticons/<#EMO_DIR#>/biggrin.gif' class='bbc_emoticon' alt=':D' />*/;
655 linijka:
}

Użytkownik Optymalny193 edytował ten post 06.05.2011 19:22
Odpowiedz