11.10.2012, 13:16 | #1 (permalink) |
Registriert seit: 24.11.2011
Ort: Wien
Alter: 51
Beiträge: 30
|
ALICE und SILVIE
Kriege einige Sachen bezüglich ALICE und SILVIE auf Clafghan nicht hin:
Erstmal zu ALICE: Habe ein Citycentre mit dem Namen "myCity" erstellt und im Modul (ALICE Erweiterung) im Init-Feld folgendes eingetragen: Code:
this setvariable ["townlist",[myCity]]; ALICE_forcePopulation = <boolean>; - set to true if you want to populate town even without players' presence. Example: BIS_loc_acityc_kozlovka setvariable ["ALICE_forcePopulation",true]; ALICE_populationCoef = <number>; - coeficient to tell system what amount of civilians will be outside doing some action. 0.5 means 50% of civilians will be outside. Example: BIS_loc_acityc_kozlovka setvariable ["ALICE_populationCoef",1]; Somit sieht meine Init-Zeile im Modul so aus: Code:
this setvariable ["townlist",[myCity]]; myCity setvariable ["ALICE_forcePopulation",true]; myCity setvariable ["ALICE_populationCoef",0.5]; Und nun zu SILVIE: Fahrzeuge spawnen wie geplant, allerdings möchte ich, dass eine 50%ige Chance besteht, dass das Fahrzeug mit einer Autobombe versehen ist. Dazu habe ich folgendes in die Init-Zeile des SILVIE-Moduls eingetragen: Code:
BIS_silvie_mainscope setvariable ["vehicleInit",{[_this] execVM "carbomb.sqf";}]; Code:
_chance = 50; // chance of carbomb in percent _chanceFactor = 100 / _chance; _car = _this select 0; _random = floor(random _chanceFactor); if(_random == 0) then { hint format["Bombe in %1", _car]; waitUntil {isEngineOn _car}; sleep 0.5; "HelicopterExploSmall" createVehicle getPos _car; }; Irgendwo habe ich auch gelesen, dass die Zivilisten auch die Fahrzeuge benutzen. Das machen sie bei mir nicht. Dazu sei angemerkt, dass ich auch ASR_AI laufen habe. Liegt es vielleicht daran, oder muss man da noch irgendwas extra festlegen? |
11.10.2012, 13:50 | #2 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Nur zum Skript. Mit deinem ist die Wahrscheinlichkeit 2% für eine Bombe.
Das sollte so reichen: Code:
if((random 100) < 50) then { _car = _this select 0; hint format["Bombe in %1", _car]; waitUntil {isEngineOn _car}; sleep 0.5; "HelicopterExploSmall" createVehicle position _car; }; |
11.10.2012, 14:32 | #3 (permalink) |
Registriert seit: 24.11.2011
Ort: Wien
Alter: 51
Beiträge: 30
|
Jo, so geht's auch, ist auch einfacher. Aber wieso sollte meine Version eine Chance von 2% ergeben?
100 / 50 = 2 floor(random 2) ergibt 0 oder 1; also 50% Chance auf 0 oder hab ich da irgendwo einen Gedankenfehler? |
11.10.2012, 15:12 | #5 (permalink) |
Registriert seit: 26.11.2006
Ort: Kiel, S-H
Alter: 57
Beiträge: 3.013
|
Ich sehe da keinen, obgleich ich nicht extra eine ExtraVariable für die _chancefactor aufmachen würde. also eher direkt so: _random = floor(random (100/_chance));
__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547 |
11.10.2012, 15:56 | #6 (permalink) |
Registriert seit: 24.11.2011
Ort: Wien
Alter: 51
Beiträge: 30
|
Laut BIS Wiki sollte es so sein! x=round(random 5) will return 0,1,2,3,4 or 5. x=floor(random 5) will return 0,1,2,3 or 4. x=ceil(random 5) will return 0, 1,2,3,4 or 5. (0 is very unlikely, but possible, as ceil 0 is 0) http://community.bistudio.com/wiki/random |
11.10.2012, 16:01 | #7 (permalink) |
Registriert seit: 24.11.2011
Ort: Wien
Alter: 51
Beiträge: 30
|
Jaja, ist schon richtig. Die Lösung von Vienna ist ja auch wesentlich schöner. Nutzt allerdings nicht viel, weil's nicht so funzt, wie es soll. Über die Form kann man sich ja noch später Gedanken machen, aber offensichtlich ist es so, dass ich bei jedem Vehicle den gleichen _random Wert bekomme, was schon etwas merkwürdig ist... |
11.10.2012, 16:29 | #8 (permalink) |
On every car - heißt nicht für jedes Vehicle einzeln, sondern einmal für alle. Daher dein alles oder nichts. Mach das also anders: Lasse in dem Code ein kleines Script ausführen, welches jedes erzeugte Fahrzeug in ein Array aufnimmt. Anschließend kümmert sich ein weiteres Script darum aus diesem Array ein paar zufällig gewählte Fahrzeuge mit Bomben zu versehen. (Dazu kommen dann natürlich noch so Sachen wie "ist das Fahrzeug noch da/alive? - wenn nein, entferne es aus dem Array" oder "Sind neue Fahrzeuge gespawnt? - füge sie dem Array hinzu". Das stinkt nach einer mittelschweren .fsm und die ganze Geschichte ist ganz sicher nichts für Anfänger. Ich rate dir also davon ab wenn du nicht jemanden findest der es dir schreibt.) Ich habe sowas ähnliches schonmal mit dem ALICE Modul gemacht. Dort hat jeder gespawnte Civ eine 5%ige Chance ein radikaler, suizidgefährdeter Moslem zu werden.
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ Geändert von Pfandgiraffe (11.10.2012 um 16:31 Uhr). |
|
11.10.2012, 21:01 | #9 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Deine Berechnung stimmt natürlich. Ich habe mich "verschaut" und _chanceFactor = 100 - _chance gelesen. |
11.10.2012, 22:23 | #10 (permalink) |
Registriert seit: 24.11.2011
Ort: Wien
Alter: 51
Beiträge: 30
|
Ah, das erklärt natürlich einiges. Die Bezeichnung "VehicleInit" hat mich zu der Überzeugung gebracht, dass es so ist, als würde der Code in eine Art Init-Feld, wie beim Editor, eingetragen werden. Ja also wirklich Anfänger bin ich keiner. Ich bin Programmierer und habe grad Zeit, somit nehme ich die Herausforderung an. Das Scripten in Arma ist halt eine eigene Sache. Mit vielen Sachen hatte ich da nich nix zu tun. Ja, geil. Sowas ähnliches hab ich auch halbfertig rumliegen, allerdings nicht mit ALICE, sondern eigene Civs. Da gibt es sogar ein geringe Chance, dass der Selbstmordattentäter in die Luft fliegt, wenn man ihn trifft - Das macht echt Laune! |
12.10.2012, 09:40 | #11 (permalink) |
Registriert seit: 26.11.2006
Ort: Kiel, S-H
Alter: 57
Beiträge: 3.013
|
Anmerkung dazu: Früher (ArmA1) war es wirklich mal so das ein random 5 durchaus auch 5 erzeugen konnte, so das ein simpler floor durchaus in die Hose gehen konnte. Das hat BIS aber glücklicherweise bereinigt.
__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547 |
12.10.2012, 15:07 | #12 (permalink) |
Registriert seit: 24.11.2011
Ort: Wien
Alter: 51
Beiträge: 30
|
ERKENNTNIS!!!
Code:
BIS_silvie_mainscope setvariable ["vehicleInit",{[_this] execVM "carbomb.sqf";}]; Es trat nur der unglaubliche Fall ein, dass bei 5 Versuchen für fast alle Fahrzeuge bei einer 50:50 Chance eine Bombe plaziert wurde!!! Ich sollte diese Woche Lotto spielen - unbedingt! Das Script funzt und klappt! |
12.10.2012, 17:06 | #13 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
100.000 Mal random 4 mit floor, ceil und round ergibt folgende Verteilung:
Gesamt (random 4): 100000 floor: 0: 24971 1: 24903 2: 25055 3: 25071 4: 0 ceil: 0: 0 1: 24971 2: 24903 3: 25055 4: 25071 round: 0: 12601 1: 24794 2: 24917 3: 25212 4: 12476 Rechenzeit: 26 Sekunden Zu beachten die Werte von round bei 0 und 4! Somit ist floor ideal für den Index von Arrays. Wer sich spielen will, hier das Test-Skript: Random_Test.sqf Code:
// Test von random mit floor, ceil und round _Ges = 0; _ZaF = 0; _ZbF = 0; _ZcF = 0; _ZdF = 0; _ZeF = 0; _ZaC = 0; _ZbC = 0; _ZcC = 0; _ZdC = 0; _ZeC = 0; _ZaR = 0; _ZbR = 0; _ZcR = 0; _ZdR = 0; _ZeR = 0; _time = time; while {_Ges < 100000} do { _Ges = _Ges+1; _Zahl = random 4; switch (floor _Zahl) do { case 0:{_ZaF=_ZaF+1}; case 1:{_ZbF=_ZbF+1}; case 2:{_ZcF=_ZcF+1}; case 3:{_ZdF=_ZdF+1}; case 4:{_ZeF=_ZeF+1}; }; switch (ceil _Zahl) do { case 0:{_ZaC=_ZaC+1}; case 1:{_ZbC=_ZbC+1}; case 2:{_ZcC=_ZcC+1}; case 3:{_ZdC=_ZdC+1}; case 4:{_ZeC=_ZeC+1}; }; switch (round _Zahl) do { case 0:{_ZaR=_ZaR+1}; case 1:{_ZbR=_ZbR+1}; case 2:{_ZcR=_ZcR+1}; case 3:{_ZdR=_ZdR+1}; case 4:{_ZeR=_ZeR+1}; }; }; _ergebnis = format["Gesamt (random 4): %1\n\nfloor:\n0: %2\n1: %3\n2: %4\n3: %5\n4: %6\n\nceil:\n0: %7\n1: %8\n2: %9\n3: %10\n4: %11\n\nround:\n0: %12\n1: %13\n2: %14\n3: %15\n4: %16\n\nRechenzeit: %17 Sekunden", _Ges,_ZaF,_ZbF,_ZcF,_ZdF,_ZeF,_ZaC,_ZbC,_ZcC,_ZdC,_ZeC,_ZaR,_ZbR,_ZcR,_ZdR,_ZeR,floor(time-_time)]; hint _ergebnis; copyToClipboard _ergebnis; Player groupChat "Ergebnis ins Clipboard kopiert!" |
Stichworte |
alice ♥, silvie ♥ |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
SILVIE - ALICE Fahrzeuge | Anemia | Editing & Scripting | 7 | 25.12.2010 11:20 |
Zivilleben Alice A.L.I.C.E | hypercop | Editing & Scripting | 7 | 14.09.2010 22:10 |