←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

Nauka pisania pluginów od podstaw

  • +
  • -
Barto_12_SAS - zdjęcie Barto_12_SAS 07.08.2012

Witam .
Po długim okresie czasu przebywania na tym forum ( we wrześniu drugi rok będzie ) dochodzę do wniosków , że aby się rozwijać nie mogę w koło macieja przewalać i przerabiać sma plików na zasadzie "ctrl+c ---> ctrl+v" . To już niestety mi nie wystarcza . Potrzebuję " niezależności " w programowaniu (?) no i ze względu na to , że PAWN jest jednym z prostrzych ( jak dla mnie ) języków do zrozumienia ( coś nie coś wychwyciłem z tych tysięcy linijek :D ) postanowiłem zwrócić się o pomoc . Chodzi mi o konkretne rzeczy , jakieś źródła do nauki , proste ćwiczenia , definicje ( przeważnie , bo nie zawsze wiem co jest co i po co tyle tego w kodu w pliku ) .
Wydałem na książki z serii "Symfonia C++" i Pasja C++ , niestety - na hasło <iostream> robię jedno wielkie WTF . Na razie przeniosłem z tego jak sobie nie robić syfu w kodzie , jak używać if i else - definiowanie czego kolwiek nadal leży w ciemnej d**ie :/

Dlatego liczę na każdy link z dobrym materiałem na ten temat , jeżeli ktoś zna dobre tytuły książek to byłoby super.

P.S - chyba dobry dział + jak jest z informatyką na poziomie L.O ?

Pozdrawiam i czekam na spam materiałem Barto_12_SAS

P.P.S. - za brak estetyki w poście obwiniam telefon , z którego piszę ;)
Odpowiedz

  • +
  • -
Leihto - zdjęcie Leihto 07.08.2012

Z mojego 'doświadczenia' (nie koniecznie w pawnie), wiem że pisanie 'programów' czy pluginów to w głównej mierze umiejętność korzystania z dokumentacji, tutoriali (z forum) oraz logicznego myślenia.

Najprościej jest postawić sobie jakiś cel i próbować go spełnić.
Jeżeli będziesz próbował napisać 'większego moda', to rozpisz sobie wszystkie czynności na zwykłej kartce, bo w pamięci możesz coś pomieszać.

Jeżeli napiszesz coś 'nieoptymanie' to też nie szkodzi. Przecież nikt się nie urodził od razu tak 'za***isty' żeby wszystko umieć bezbłędnie (no pomijając jedną osobę [która twierdzi że umiała wszystko od razu]).

Ucz się na błędach, bo je przynajmniej zapamiętasz.
Praktyka, praktyka, praktyka!
Użytkownik Leihto edytował ten post 07.08.2012 23:09
Odpowiedz

  • +
  • -
Kołodziej - zdjęcie Kołodziej 07.08.2012

Jeżeli będziesz próbował napisać 'większego moda', to rozpisz sobie wszystkie czynności na zwykłej kartce, bo w pamięci możesz coś pomieszać.

Raczej osoba która zaczyna uczyć się pisania pluginów nie napisze od razu wielkiego moda,raczej proste pluginy ale i tak świetnie to rozpisałeś
Odpowiedz

  • +
  • -
Barto_12_SAS - zdjęcie Barto_12_SAS 08.08.2012

Dzięki - cel jużmam założony ale szukałem "bodźca" i jakiegoś "sposobu" / "kopa" do nauki ; wnioskuję, że najlepiej uczyć się pisać na modach .
Proste pluginy , hm ...
Biorę się za szperanie w artykułach i dokumentacji :^D

Jeszcze raz dzięki .
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 08.08.2012

Jako żeby pisać programy trzeba je ... Zrozumieć? To takie moje zdanie. Jeśli chcesz być programistą albo znać te podstawy powinieneś najpierw przeczytać co nieco o Algorytmice. Potem Tworzyć proste algorytmy (nawet nawiązujac do CS'a) Byle byś zrozumiał Te ify / While/ do while / fory i jak to wszystko działa. Potem masz otwartą drogę do Innych języków - do Pawna też ;)
Odpowiedz

  • +
  • -
Barto_12_SAS - zdjęcie Barto_12_SAS 08.08.2012

Jeżeli mógłbyś mi rozwinąć coś nie coś na temat algorytmiki to byłoby fajnie :giggle:
If-y ogarniam ; pętli się będę uczył :^D
Teraz tylko pomysł na plugin ;>
Odpowiedz

  • +
  • -
DarkGL - zdjęcie DarkGL 08.08.2012

Jeżeli mógłbyś mi rozwinąć coś nie coś na temat algorytmiki to byłoby fajnie

zbyt rozległy temat żeby pisać o tym w poście
Odpowiedz

  • +
  • -
Barto_12_SAS - zdjęcie Barto_12_SAS 08.08.2012

Jeżeli mógłbyś mi rozwinąć coś nie coś na temat algorytmiki to byłoby fajnie

zbyt rozległy temat żeby pisać o tym w poście


No, a w skrócie da się ? :D
Odpowiedz

  • +
  • -
Barto_12_SAS - zdjęcie Barto_12_SAS 08.08.2012

Ok ,dzięki - postaram się jak najszybcioej zaopatrzyć w to .

Ale jeszcze mnie jedno nadal nurtuje - jak to jest z informatyką na poziomie L.O ? Bo chyba "największą mukę" zrobiłem idąc do L.O ???:(
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 08.08.2012

Prawda była niedawno poruszana w SB - Dopóki sam się nie zbierzesz to nawet w technikum się nie nauczysz. Znam ludzi którzy orientują się w programowaniu lepiej od moich znajomych z Technikum a są po zawodówce (bez urazy)

Algorytmika? Hmmm....

Zajrzyj to szuflady w kuchni gdzie trzymacie Galaretki , Pomysły na itp i zobacz Jak przygotować. Ot to jest Taka "naciągana" algorytmika w postaci Listy kroków.
Odpowiedz

  • +
  • -
Barto_12_SAS - zdjęcie Barto_12_SAS 08.08.2012

Algorytmika? Hmmm....

Zajrzyj to szuflady w kuchni gdzie trzymacie Galaretki , Pomysły na itp i zobacz Jak przygotować. Ot to jest Taka "naciągana" algorytmika w postaci Listy kroków.


Mały szok :hmmm:
Trochę się przeliczyłem z możliwościami - na razie będę pisał plugin al'a sklep :^D
Odpowiedz

  • +
  • -
Barto_12_SAS - zdjęcie Barto_12_SAS 09.08.2012

Refresh

Panowie ( teraz będzię można się załamać albo śmiać :^D ) proszęo podpowiedź z tym co sam "napisałem / skonstruowałem" .

Miało to co sek. zabierać graczowi 1hp :D .

SMA :

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <csx>
#include <cstrike>
#include <fakemeta_util>


#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

new victim[32]

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_logevent("Poczatek_Rundy", 2, "1=Round_Start")
}

public Poczatek_Rundy()
{
set_task ( 1.0, "zaraza", _, _, _, "b");
}
public zaraza()
{
fm_fakedamage( victim, _, 1.0, (1<<1) );
}

I error kompilacji :

Error: Argument type mismatch (argument 1) on line 28 ( ta linijka : fm_fakedamage( victim, _, 1.0, (1<<1) ); )

Pomysły ? :wstyd:
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 09.08.2012

oj żeś przekombinował. Lepiej odpalić Taska jak typ się zrespi ale bez flagi b - bo prze okazji moze zabrać komuś HP jak jest nie zywy i wtedy bum.
Odpowiedz

  • +
  • -
Barto_12_SAS - zdjęcie Barto_12_SAS 09.08.2012

Ok .A z tym zabieraniem Hp to dobrze ? Tam mi error wywaliło .
A i czasem widze taki trik jak "id gracza" . Ja zrobić takie "id" , aby nie wywalało błędów ?
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 09.08.2012

Możesz wysyłać Taskiem ID gracza (w którymś temacie dziś to podałem jak ktoś się o taska pytał. :P) HP najłatwiej zabrać pobierając hp i usuwając o 1 (biblioteka fun). nie bawiąc się w fakemety, csxy cstrike itp. Ten plugin z amxmodx i funem można chyba zrobić. Zrobił bym CI no ale chcesz się nauczyć ja CI mogę Tylko podpowiedzieć. Grunt że już mnie więcej czaisz Jak to działa . ;)
Odpowiedz

  • +
  • -
Barto_12_SAS - zdjęcie Barto_12_SAS 09.08.2012

Biorę się do pracy :D

Na telu jestem , więc tylko napiszę to co będę potrafił , a sprawdzę dopiero jutro , bo edytor nie ma bazy Pawn .
Odpowiedz

  • +
  • -
Hiroshima - zdjęcie Hiroshima 09.08.2012

na Twoim miejscu nauczyłbym się najpierw korzystania z google:
https://www.google.p...iw=1600&bih=785

jest to dowód na to, ze nie umiesz zawiązać sznurowadeł a chcesz zrobić prawo jazdy
Odpowiedz

  • +
  • -
Barto_12_SAS - zdjęcie Barto_12_SAS 09.08.2012

Widziałem to -,-

Tak , być może trafne twierdzenie ale nie bardzo mi mówiło to co było tam zawarte ( gorszy dzień / luki w wiedzy / nie wiem ) .

Faktycznie to się przydało - to są moje pierwsze "indywidualne podrygi" ( wystarczy popatrzeć na poprzednie moje tematy ) . Nie liczę na wyrozumiałość ale gdyby ktoś to czytał z zapałem do wejścia w pisanie pluginów ( już nr. 1 na google ten temat co podałeś link do wyszukiwania xD ) się nie zraził albo nie wyciągnął zbyt pochopnych wniosków :)

EDIT : Wynik pracy ( nie testowane , bo na tel nie mam bazy pawn :/ )

/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <csx>
#include <cstrike>
#include <fakemeta_util>
#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR ""

public plugin_init ()
{
register_plugin ( PLUGIN, VERSION , AUTHOR )
register_logevent ("Poczatek_Rundy" , 2 , "1=Round_Start" )
}
public Poczatek_Rundy ()
{
set_task ( 1.0, "zaraza" , _ , _ , _ , "a", 99 );
set_task ( 0.6, get_user_health ( id ), _, _, _, "a", 100 )

}
public zaraza()
{
   get_user_health (( id ) > -1)

   }



Użytkownik Barto_12_SAS edytował ten post 09.08.2012 22:31
Odpowiedz

  • +
  • -
Barto_12_SAS - zdjęcie Barto_12_SAS 10.08.2012

Teraz się skompilowało ale nie działa w praktyce ( testowane w trybie "new game")


/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <csx>
#include <cstrike>
#include <hamsandwich>
#include <fun>


#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR ""

public plugin_init ()
{
register_plugin ( PLUGIN, VERSION , AUTHOR )
register_logevent ("Poczatek_Rundy" , 2 , "1=Round_Start" )
set_task ( 1.0, "zaraza" , _ , _ , _ , "a", 99 );
}
public Poczatek_Rundy ()
{
// code


}



public zaraza(id)
{
if(is_user_alive(id))
{
client_print(id,print_chat,"[Plaga] Panuje Zaraza !!") // Info o zarazie
return PLUGIN_HANDLED

// Zabieranie HP


if(get_user_health(id)>=100)
{
set_user_health(id,99)
}
if(get_user_health(id)>=99)
{
set_user_health(id,98)
}
if(get_user_health(id)>=98)
{
set_user_health(id,97)
}
if(get_user_health(id)>=97)
{
set_user_health(id,96)
}
if(get_user_health(id)>=96)
{
set_user_health(id,95)
}
if(get_user_health(id)>=95)
{
set_user_health(id,94)
}
if(get_user_health(id)>=94)
{
set_user_health(id,93)
}
if(get_user_health(id)>=93)
{
set_user_health(id,92)
}
if(get_user_health(id)>=92)
{
set_user_health(id,91)
}
if(get_user_health(id)>=91)
{
set_user_health(id,90)
}
if(get_user_health(id)>=90)
{
set_user_health(id,80)
}
if(get_user_health(id)>=80)
{
client_print(id,print_chat,"[Plaga] Panuje Zaraza - Twoj organizm jest oslabiony !!!") // Info o zarazie
set_user_health(id,80)
}
if(get_user_health(id)>=70)
{
set_user_health(id,65)
}
if(get_user_health(id)>=65)
{
set_user_health(id,50)
}
if(get_user_health(id)>=50)
{
set_user_health(id,25)
}
if(get_user_health(id)>=25)
{
set_user_health(id,10)
client_print(id,print_chat,"[Plaga] Twoj organizm jest na skraju wyczerpania !!") // Info o zarazie
}

}
}

Użytkownik Barto_12_SAS edytował ten post 10.08.2012 08:37
Odpowiedz