←  Problemy

AMXX.pl: Support AMX Mod X i SourceMod

»

Problem z pluginem.

Zablokowany

  • +
  • -
Ciechan - zdjęcie Ciechan 12.06.2010

Witam. Chciałem sam napisać plugin według poradnika na tej stronce, lecz podczas próby kompilowania tego na strone AMX Mod X - Half-Life Scripting for Pros!
wyskakuje mi
Your plugin failed to compile! Read the errors below:
Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

/home/groups/amxmodx/tmp3/phpB0d3J8.sma(24) : warning 217: loose indentation
/home/groups/amxmodx/tmp3/phpB0d3J8.sma(26) : warning 217: loose indentation
/home/groups/amxmodx/tmp3/phpB0d3J8.sma(26) : error 029: invalid expression, assumed zero
/home/groups/amxmodx/tmp3/phpB0d3J8.sma(28) : warning 217: loose indentation
/home/groups/amxmodx/tmp3/phpB0d3J8.sma(30) : warning 225: unreachable code
/home/groups/amxmodx/tmp3/phpB0d3J8.sma(30) : warning 217: loose indentation

1 Error.
Could not locate output file /home/groups/amxmodx/public_html/websc3/phpB0d3J8.amx (compile failed).
Nie wiem zbytni o co chodzi. Tutaj daje o to ten plugin:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Grzegorz"
new hp_koszt


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	hp_koszt = register_cvar("hp_koszt","6000")
	register_clcmd("say /hpme","hp")
	
	
}
public hp(id){
	if(!is_user_alive(id)){
		client_print(id,print_chat,"[Zmiana HP] Nie mozesz skorzystac z tej uslugi ziom, bo jestes niezywy ;-(")
return PLUGIN_HANDLED
}
if(get_user_health(id)>=200)){
       client_print(id,print_chat,"[Zmiana HP] Juz skorzystales z tej uslugi!")
        return PLUGIN_HANDLED
    } 
    set_user_health(id,200)
    cs_set_user_money(id,cs_get_user_money(id)-get_pcvar_num(hp_koszt))
    return PLUGIN_HANDLED
}
Proszę o podanie co jest źle w pluginie, co powinienem z nim zrobić. Najlepiej podajcie poprawna wersję pluginu.
Ma on za zadanie po wpisaniu /hpme dodać hp graczowi. Potrzebuję tego, gdyż zaczynam pisanie pluginów, i chcę się czegoś nauczyć, zobaczyć co mam źle. Na pewno pomoże mi to w dalszej edukacji. Pozdrawiam
Odpowiedz

  • +
  • -
Lukasz5 - zdjęcie Lukasz5 12.06.2010

Łap... :D

Załączone pliki

  • Załączony plik  lapaj.sma   990 bajtów   38 Ilość pobrań
Odpowiedz

  • +
  • -
Ciechan - zdjęcie Ciechan 13.06.2010

Z tego co widzę doszła linijka
jestes niezywy ;-(")
Nie znam się dlatego pytam co oznaczają poszczególne jej elementy?

13 czerwiec 2010 - 09:44:

Z tego co widzę doszła linijka

jestes niezywy ;-(")
Nie znam się dlatego pytam co oznaczają poszczególne jej elementy?


Edit: po wpisaniu tej komendy /hpme wyskakuje informacja, że jestem nieżywy ([Zmiana HP] Nie mozesz skorzystac z tej uslugi ziom, bo jestes niezywy ;-().
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 13.06.2010

Łukasz zdaje się niezbyt zrozumiał prośbę, było "poprawcie mi błędy" a nie "napiszcie mi to dobrze".
Podoba mi się, że Ciechan nie chce iść na łatwiznę, ale sam coś zrobić :)

używaj [ sma ] [/ sma] zamiast [ code ] [/ code]



#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Grzegorz"
new hp_koszt


public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
hp_koszt = register_cvar("hp_koszt","6000")
register_clcmd("say /hpme","hp")


}
public hp(id){
if(!is_user_alive(id)){
client_print(id,print_chat,"[Zmiana HP] Nie mozesz skorzystac z tej uslugi ziom, bo jestes niezywy ;-(")
return PLUGIN_HANDLED
}
if(get_user_health(id)>=200)){//ŹLE! Jeżeli gracz ma 200 lub więcej hp, a jak może mieć więcej? Poza tym takim warunkiem sprawdzisz jego hp, a nie to czy już to kupił, bo jak oberwie to będzie miał mniej hp, chyba, że nie ma limitu ile razy na runde można to kupić..
client_print(id,print_chat,"[Zmiana HP] Juz skorzystales z tej uslugi!")
return PLUGIN_HANDLED
}
//tu powinieneś dać warunek sprawdzający czy gracza stać na kupno, tj czy ma 6000 lub więcej kasy.
/*Czyli w skrócie szkielet
if(cs_get_user_money>=get_pcvar_num(hp_koszt))
{
set_user_health(id,200)
cs_set_user_money(id,cs_get_user_money(id)-get_pcvar_num(hp_koszt))
}
else
{
print(id, "Nie masz tyle kasy/Nie stac Cie")
}
Oczywiście postawiaj odpowiednie funkcje.
*/
set_user_health(id,200)
cs_set_user_money(id,cs_get_user_money(id)-get_pcvar_num(hp_koszt))
return PLUGIN_HANDLED
}


Odpowiedz

  • +
  • -
Ciechan - zdjęcie Ciechan 13.06.2010

if(get_user_health(id)>=200)){//ŹLE! Jeżeli gracz ma 200 lub więcej hp, a jak może mieć więcej? Poza tym takim warunkiem sprawdzisz jego hp, a nie to czy już to kupił, bo jak oberwie to będzie miał mniej hp, chyba, że nie ma limitu ile razy na runde można to kupić..

wytłumaczysz co tutaj powinienem napisać, gdyż nie wiem. Przy okazji znasz jakieś źródło skąd można się uczyć pisania pluginów(pawn c++) od podstaw.
Odpowiedz

  • +
  • -
grankee - zdjęcie grankee 13.06.2010

Kursów C++ na necie jest masa. Nie podam Ci tego, z którego ja się uczyłem, bo niedługo po tym zgubiłem gdzieś linka.


Poczytaj o warunkach if

if(get_user_health(id)>=200))
{
//tutaj kod, który wykona się w sytuacji, gdy warunek będzie prawdą
}

Innymi słowy "Jeśli ilość punktów życia (hp) jest większa lub równa 200 to wykonaj to co między klamrami"
jest kilka 'ale'
-Jeśli ktoś kupi sobie 200hp to będzie miał tyle do momentu aż nie straci chociażby 1 hp (postrzał, upadek z wysokości itd), zatem mając 199 hp już będzie mógł kupić kolejny raz 200hp, natomiast więcej niż 200 hp w jaki sposób miałby mieć(to zawarłeś w warunku if)?


Nie mogę powiedzieć co powinieneś napisać, bo nie wiem w jakim przypadku ma być możliwość kupna a w jakim nie.
Odpowiedz

  • +
  • -
Ciechan - zdjęcie Ciechan 13.06.2010

Jeszcze takie pytanko, czego lepiej się uczyć pawn czy c++?
Odpowiedz

  • +
  • -
G[o]Q - zdjęcie G[o]Q 13.06.2010

zalezy co chcesz robic jesli pisac pluginy to pawn i przy okazji podstawy c++ a jesli jakies programy to odpusc sobie pawn i bierz sie za c++ //polecam symfonie naprawdę dobra ksiazka o C++
Odpowiedz
Zablokowany