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

Warunki.


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

#1 darkman

    Wszechwiedzący

  • Przyjaciel

Reputacja: 87
Zaawansowany

  • Postów:553
  • Lokalizacja:inactive
Offline

Napisano 31.12.2008 15:10

Niżej opisze jak używać w kodzie metody, która zastępuje operator 'if' jednocześnie zaoszczędzając miejsca w danym skrypcie.
Standardowo, jeżeli chcemy, żeby podczas gdy coś zachodzi wykonała się jakaś funkcja używamy operatora
if(warunek)
            wykonaj_funkcje();

Przykład kodu:

#include <amxmodx>

public plugin_init()
{
	register_plugin("Tutorial", "Tutorial", "Tutorial");
	register_clcmd("test", "cmd_test");
}

public cmd_test(id){
	if(is_user_alive(id))
		client_print(id, print_chat, "Jestes zywy");
	else client_print(id, print_chat, "Jestes martwy");
}

-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Napisany kod drukuje na chacie graczowi czy jest żywy lub martwy przy wpisaniu w konsoli komendy test. Nie chodzi jednak o sam kod i co on wywołuje, tylko o to jak prosto można zastąpić operator if(). Mianowicie można użyć formułki:

warunek ? jeżeli zwraca true(1) wykonaj xx : kiedy zwraca false wykonaj zz

Przykład kodu:
#include <amxmodx>

public plugin_init()
{
	register_plugin("Tutorial", "Tutorial", "Tutorial");
	register_clcmd("test", "cmd_test");
}

public cmd_test(id){
	is_user_alive(id) ? client_print(id, print_chat, "Jestes zywy") : client_print(id, print_chat, "Jestes martwy");
}

W istocie kod działa tak samo jak pierwszy, tylko jego struktura jest troche inna. Nie ogranicza się to tylko do funkcji zwracających 0 lub 1, można tego też użyć w inny sposób np:

warunek == 2 ? client_print(id, print_chat, "Zmienna warunek ma wartość 2") : client_print(id, print_chat, "Zmienna warunek ma wartość inną niż 2")

Zachęcam do używania tej metody.
  • +
  • -
  • 2

#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 31.01.2010 19:41

W istocie kod działa tak samo jak pierwszy, tylko jego struktura jest troche inna. Nie ogranicza się to tylko do funkcji zwracających 0 lub 1, można tego też użyć w inny sposób np:


w zasadzie to warunek logiczny zawsze zwraca true(1)/false(0) w przypadku wyzej jesli wartosc bedzie = 2 to zwroci true czyli 1

sry za offtop taka mala sugestia tylko :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 Miczu

    Godlike

  • Przyjaciel

Reputacja: 657
Wszechmogący

  • Postów:2 862
Offline

Napisano 31.01.2010 19:48

1 rok i 1 miesiac, ale odkop :F

bedąc dokladniejszym, to 0 to false, a wszystko inne to true, czyli -1 to tez true (mam nadzieje ze dobrze to pamietam :) ).
  • +
  • -
  • 0

#4 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 31.01.2010 19:56

no w zasadzie to tak !cos = false a reszta true przynajmniej w Cpp

ale nie ma mozliwosci zeby wyrazenie

if (zmienna==1) mialo inna wartosc niz 0 lub 1

Użytkownik G[o]Q edytował ten post 31.01.2010 22:16

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

#5 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 980
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 13.09.2010 16:53

equal(tname,"lape") ? map_lape = true : map_lape = false

Welcome to the AMX Mod X 1.76-300 Compiler.
Copyright (c) 1997-2006 ITB CompuPhase, AMX Mod X Team

Error: Expected token: ":", but found "=" on line 43
Warning: Expression has no effect on line 43
Error: Expected token: ";", but found ":" on line 43
Error: Invalid expression, assumed zero on line 43
Error: Too many error messages on one line on line 43

Compilation aborted.
4 Errors.
Could not locate output file C:\Documents and Settings\mn\Pulpit\DarkGL\compiler\compiler\compiled\race_mod.amx (compile failed).
wtf ?
  • +
  • -
  • 0

#6 Vertricus

    Godlike

  • Przyjaciel

Reputacja: 426
Wszechobecny

  • Postów:1 549
  • Lokalizacja:.
Offline

Napisano 13.09.2010 16:57

map_lape = equal(tname,"lape");
?:]
map_lape = (equal(tname,"lape"))?true:false;

@edit rwa ani nie zczaiłem że powinieneś swój topic założyć ;(
  • +
  • -
  • 0

#7 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 980
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 13.09.2010 17:02

nie kapuje dlaczego moje nie działa equal zwraca true lub false dobra i jak będzie true to ja chcę ustawić zmienna bool na true i vice versa a tu te błędy użyje co podałeś bo jest ładne i chyba działa :D ale ciekawi mnie to
  • +
  • -
  • 0

#8 Death_Player

    Wszechpomocny

  • Użytkownik

Reputacja: 25
Życzliwy

  • Postów:325
  • Lokalizacja:Warszawa
Offline

Napisano 22.12.2010 12:27

a jak chce dać dwie instrukcje w jednym else czyli
if "warunek" then "costam" else "costam1" "costam2" ?

A dobra już wiem klamerki {}

Użytkownik Death_Player edytował ten post 22.12.2010 12:34

  • +
  • -
  • 0




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

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